我一直在尝试处理Django inlineformsets。绊倒我的是尝试将查询集传递给formset构造函数。
考虑两个简单的模型。
class PickSheet(Model):
name = Models.CharField()
class Pick(Model):
picksheet = Models.ForeignKey(PickSheet, related_name='picks')
team = Models.CharField()
points = Models.CharField()
现在创建一个FormSet。
PickFormSet = inlineformset_factory(PickSheet, Pick, max_num=5, extra=0, fields=['team', 'points'])
在数据库中,我有一个使用两个Picks创建的PickSheet。
如果我在创建formset时使用instance =,我会得到预期的两种形式。
obj = get_object_or_404(PickSheet, id=3)
formset = PickFormSet(instance=obj)
print(formset.management_form)
如果我在创建formset时使用queryset =,我会得到零表单。
qs = PickSheet.objects.filter(id=3)
formset = PickFormSet(queryset=qs)
print(formset.management_form)
发生了什么事? PickSheet.objects.filter(id = 3)是否等同于PickSheet.objects.get(id = 3)?
答案 0 :(得分:1)
PickSheet.objects.filter(id=3)
不等同于PickSheet.objects.get(id=3)
,因为PickSheet.objects.filter(id=3)
返回一个列表而PickSheet.objects.get(id=3
)将返回一个对象实例。