Django表单,处理多个实体创建

时间:2014-03-16 18:31:10

标签: django django-models django-forms

我想做一些看起来像我在这张照片中看到的东西:

Image describing the issue I want to solve

基本上,我有两个实体:ProjectFeature。 每个项目都与某些功能有多对多的关系。

当我创建一个项目时,我希望能够添加任意数量的功能,并且我想一次性完成(只需一个表单)。

那么,这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

Inline model formsets就是你想要的。

答案 1 :(得分:0)

将此视为您的models.py

class Project(models.Model):
    project = models.Charfield(max_length=100)

class Feature(models.Model):
    name = models.Charfield(max_length=100)
    project = models.ManyToManyField(Project, blank = True)

forms.py

class ProjectForm(forms.ModelForm):
    class Meta:
        model = Project

views.py的粗略代码段:

def project(request):
    ModelForm = inlineformset_factory(Project, Feature)
    if request.method == 'POST':
        form = ProjectForm(request.POST)
        project = Project.objects.get(pk=request.pk)
        formset = ModelForm(instance=project)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('')
    else:
        form = ProjectForm()
        formset = ModelForm()    
        return render_to_response('project.html', {'form':
form, 'formset': formset})