Django 什么';在这种情况下,发布同一模型的多个表单的最佳方式是什么?

Django 什么';在这种情况下,发布同一模型的多个表单的最佳方式是什么?,django,django-models,django-templates,Django,Django Models,Django Templates,我试图在一次提交中发布同一模型的多个表单 因此,我有一个模型“Task”,它有一个名称、一个类别和一个属性字段。我还有一个名为“任务检查”的模型,它有一个任务和一个状态。任务检查的目的是保存一个任务的状态,如“完成”或“已检查”,如下所示: 型号.py class Task(models.Model): name = models.CharField(max_length=100) category = models.ForeignKey(Categories) prop

我试图在一次提交中发布同一模型的多个表单

因此,我有一个模型“Task”,它有一个名称、一个类别和一个属性字段。我还有一个名为“任务检查”的模型,它有一个任务和一个状态。任务检查的目的是保存一个任务的状态,如“完成”或“已检查”,如下所示:

型号.py

class Task(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Categories)
    property = models.ManyToManyField(Property)

class TaskCheck(models.Model):
    status = models.CharField(choices=STATUS_CHOICES, default='nd', max_length=50)
    image = models.ImageField(upload_to='task_check', blank=True, null=True)
    notes = models.TextField(max_length=500, blank=True)
    task = models.ForeignKey(Task)
    property_check = models.ForeignKey(Propertycheck)

class Propertycheck(models.Model):
    property = models.ForeignKey(Property, models.DO_NOTHING)
    name = models.CharField(max_length=150)
    date = models.DateField(default=timezone.now)
    next_visit = models.DateField()
    staff = models.ForeignKey(User, max_length=25)
    notes = models.TextField(max_length=500, blank=True)
def add_propertycheck(request, property_pk):
    property_id = property_pk
    data = {'property':property_id}
    tasks = Task.objects.filter(property=property_pk)
    category = tasks.values('category').distinct()
    tasks_name = tasks.values('name')
    category = tasks.values('category').distinct()
    property_reference = Property.objects.get(pk=property_id)
    if request.method == 'POST':
        taskform = TaskCheckForm(request.POST)
        for task in tasks:
            if form.is_valid():
                checkform = form.save()
                return HttpResponseRedirect(reverse('propertycheck:details', args=[pk]))
    else:
        taskform = TaskCheckForm()

    context = {
        'task_form':taskform,
        'title':"Add Property Check",
        'task':tasks,
        'reference':property_reference,
        'category':category,
    }
    return render(request, 'propertycheck/add-propertycheck.html', context)
从上面的模型中可以看出,TaskCheck与一个PropertyCheck相关,“PropertyCheck”的目的是保存一组taskchecks

功能示例:

有人去某个属性检查是否一切正常,他会添加一个PropertyCheck,然后添加与该属性相关的每个任务的TaskCheck列表

我的模板如下所示:

{% for obj in task %}
{% if obj.category == cat %}
<div class="form-group">
    <div class="row">
        <div class="col-md-4">
            <label for="pname">{{ obj.name }}</label>
            {{ task_form.status }}
        </div>
        <div class="col-md-4">
            <label for="pname">Notes</label>
            {{ task_form.notes }}
        </div>
        <div class="col-md-4">
            <label for="pname">Image</label>
            {{ task_form.image }}
        </div>
    </div>
</div>
{% endif %}
{% endfor %}

这就是表单集的全部内容:谢谢@WillemVanOnsem。我听从了你的建议,改变了看法。我现在的问题是,我需要通过外键处理相关的模型,因此使用FormSet如何迭代其他模型?问题是,我需要TaskCheck来完成与特定属性相关的所有任务。我怎样才能做到这一点?我应该使用内联表单集还是有其他方法?