【发布时间】:2010-08-01 08:30:44
【问题描述】:
我有一个如下的 django 模型
class Project(models.Model)
name=models.CharField(max_length=200)
class Application(models.Model)
proj=models.ForeignKey(Project, null=True, blank=True)
我需要修改项目的管理表单,以便能够为项目分配多个应用程序,因此在 admin.py 中我为项目创建了一个 ModelAdmin 类,如下所示
class ProjectAdmin(ModelAdmin)
form=projectForm
project_apps=[]
项目形式如下
class ProjectForm(forms.ModelForm):
class Meta:
model = Project
project_apps =forms.ModelMultipleChoiceField(queryset=Application.objects.all(),required=False,)
def __init__(self, *args, **kwargs):
super(ProjectForm, self).__init__(*args, **kwargs)
if self.instance.id is not None:
selected_items = [ values[0] for values in Application.objects.filter(project=self.instance) ]
self.fields['project_apps'].initial = selected_items
def save(self,commit=True):
super(ProjectForm,self).save(commit)
return self.instance
通过这样做,我可以在创建/编辑项目表单中进行多项选择。 我需要的是覆盖保存方法以在所选应用程序中保存项目的引用?
我怎样才能获得选定的应用程序????
【问题讨论】:
-
你为什么不直接使用内联管理员?
-
我使用了它,但它添加了 3 个组合框,我希望它在多个选择列表中
标签: django django-admin django-forms