我的模型包含多對多關係。 Measurements
可以是任何數量的DataSets
的一部分。如何在帶有ManyToMany關係的可編輯字段上使用TabularInline?
# models.py
from django.db import models
class DataSet(models.Model):
purpose = models.TextField()
class Measurement(models.Model):
value = models.IntegerField()
sets = models.ManyToManyField(DataSet, null=True, blank=True,
verbose_name="datasets this measurement appears in")
我希望我的管理界面內聯在DataSet
管理Measurement
領域就像一個TabularInline
作品有ForeignKey
場怎麼樣。這是我到目前爲止有:
# admin.py
from django.contrib import admin
from myapp.models import Measurement, DataSet
class MeasurementInline(admin.TabularInline):
model = Measurement.sets.through
class DataSetAdmin(admin.ModelAdmin):
inlines = [MeasurementInline]
admin.site.register(DataSet, DataSetAdmin)
不幸的是,我得到的是打通測量管理下拉框與「+」按鈕旁邊。我想將實際的測量字段value
暴露在內聯中。我嘗試添加value
對MeasurementInline的字段列表:
# admin.py
class MeasurementInline(admin.TabularInline):
model = Measurement.sets.through
fields = ['value']
但是,這給了我一個錯誤:'MeasurementInline.fields' refers to field 'value' that is missing from the form.
。
我如何DataSet
管理中暴露的Measurement
編輯字段?
注: 這是一個簡化的情況下;我的真實案例在其Measurement
模型中有許多字段。這將是非常乏味,如果使用管理界面的人不得不開闢一個新的窗口中輸入的數據,尤其是因爲他們需要做的字段之間的一些複製和粘貼爲好。
即使在我的現實世界的模型,我希望用戶在線編輯不介紹DataSet
和Measurement
之間的關係的數據 - 只有Measurement
本身。我相信這會使中介模式不適合我的目的。
這不起作用,因爲沒有foriegnkey從測量到數據集。 – Shayne 2015-02-09 03:43:34