Django 什么';在这种情况下,发布同一模型的多个表单的最佳方式是什么?
我试图在一次提交中发布同一模型的多个表单 因此,我有一个模型“Task”,它有一个名称、一个类别和一个属性字段。我还有一个名为“任务检查”的模型,它有一个任务和一个状态。任务检查的目的是保存一个任务的状态,如“完成”或“已检查”,如下所示: 型号.pyDjango 什么';在这种情况下,发布同一模型的多个表单的最佳方式是什么?,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
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来完成与特定属性相关的所有任务。我怎样才能做到这一点?我应该使用内联表单集还是有其他方法?