首先,我将列出我想要实现的目标,以防万一有不同的方法去做!
我希望能够使用任何多选界面编辑 M2M 关系的双方(最好在管理页面上,尽管如果需要它可以在普通页面上)。
问题显然来自反面,因为主要方面(定义关系的地方)自动工作得很好。
我在这里尝试了一些建议以显示内联,并且可以正常工作,但它不是一个很好的界面。
我在 django 邮件列表中得到的建议是使用自定义 ModelForm。我已经让一个多选框出现,但它似乎没有“连接”到任何东西,因为它不是从任何选定的东西开始,也不会保存所做的任何更改。
这是适当的代码片段:
#models.py
class Tag(models.Model):
name = models.CharField(max_length=200)
class Project(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
tags = models.ManyToManyField(Tag, related_name='projects')
#admin.py
class TagForm(ModelForm):
fields = ('name', 'projects')
projects = ModelMultipleChoiceField(Project.objects.all(), widget=SelectMultiple())
class Meta:
model = Tag
class TagAdmin(admin.ModelAdmin):
fields = ('name', 'projects')
form = TagForm
任何帮助都将不胜感激,无论是让上面的代码工作还是提供更好的方法!
大卫M