我有下面的
class Chore(models.Model):
title = models.CharField(max_length=300)
reward = models.PositiveIntegerField( default= 1)
def __str__(self):
return self.title
class Child(models.Model):
created_by = models.ForeignKey(User,on_delete=models.PROTECT, blank = True, null = True)
name = models.CharField(max_length=300)
age = models.DecimalField (max_digits=2, decimal_places=1, default=3.0, blank = True )
class ChildChore(models.Model):
child = models.ForeignKey(Child, on_delete=models.PROTECT)
chore = models.ForeignKey(Chore, on_delete=models.PROTECT)
points = models.PositiveIntegerField( default= 0, blank = True, null = True)
形式:
class ProgressForm(ModelForm):
class Meta:
model = ChildChore
exclude = ()
ProgressFormSet = modelformset_factory(ChildChore, form=ProgressForm, extra=0, can_delete=[False])
html页:
{{ formset.management_form }}
{% for form in formset %}
{{form.chore}} # will return the title
{{form.child}} # will return the child name
{{form.points}}
查看:
def ProgressCreate(request, cid):
template_name = 'chore/progress_form.html'
if request.method == 'GET':
formset = ProgressFormSet(queryset=ChildChore.objects.filter(child=cid))
elif request.method == 'POST':
formset = ProgressFormSet(request.POST)
if formset.is_valid():
for form in formset:
# only save if name is points
if form.cleaned_data.get('points'):
form.save()
return redirect('children-list')
else:
print (formset.errors)
return render(request, 'chore/progress_form.html', {'formset': formset})
我这里的问题是如何获得模板中的其他模型字段?例如,我想要家务劳动模型的“奖励”,我需要孩子的“年龄”。 类似于{form.child.age}的操作将不起作用,在子模型中创建一个函数来返回age也不起作用。 我试着
目前没有回答
相关问题 更多 >
编程相关推荐