我有以下课程:
class Option(models.Model):
default = models.BooleanField(default=False)
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name
我有另一个使用它的课程:
class Type(models.Model):
''' more properties here '''
options = models.ManyToManyField(Option, blank=True)
我们的想法是,在django的管理站点中,我可以手动将Option
个实例添加到Type
。
现在,我已在管理站点中创建了4个Option
实例。
当我转到Type
配置,options
时,所有4个实例都已存在。我希望该框为空并手动添加,因为对于Type
的每个实例,列表应该不同。
我该怎么做?有人告诉我,我误解了ManyToManyField
......:)
编辑:为ModelAdmin
添加Option
课程:
class OptionAdmin(admin.ModelAdmin):
options = forms.ModelMultipleChoiceField(queryset=Option.objects.all(), widget=FilteredSelectMultiple("verbose name", is_stacked=False))
答案 0 :(得分:0)
我会从Type模型中删除“options”实例并创建一个新类:
class Assignment(models.Model):
type = models.ForeignKey(Type)
option = models.ForeignKey(Option)
然后我会根据需要创建尽可能多的分配行,以便将选项附加到类型。但是,在管理站点中手动管理非常困难......
答案 1 :(得分:0)
我能想出的最好的是这篇帖子/问题:
使用
filter_horizontal = ('options')
在TypeAdmin
类
做我需要的!