テンプレートにインラインを追加しようとしていますが、引き続きデータベース エラーが発生します。
more than one row returned by a subquery used as an expression
models.py には、互いに関連する 3 つのオブジェクトがあります。ユーザーはどの教師が選択されているかを確認し、その教師の下にあるすべての所有者を一覧表示できます (教師と所有者は編集不可のリストとしてのみ表示されます)。所有者の下にあるすべてのペットを一覧表示して編集可能にしたいと考えています。このエラーが発生する理由について何か考えはありますか? そして、どうすれば私の目標を達成できるでしょうか?
models.py
class Teacher(models.Model):
teacher = models.CharField(max_length=300)
class Owner(models.Model):
relevantteacher = models.ForeignKey(Teacher)
owner = models.CharField(max_length=300)
class PetName(models.Model):
relevantowner = models.ForeignKey(Owner)
pet_name = models.CharField(max_length=50)
フォーム.py
class OwnerForm(forms.ModelForm):
class Meta:
model = Owner
PetNameFormSet = inlineformset_factory(Owner,
PetName,
can_delete=False,
extra=3,
form=OwnerForm)
ビュー.py
def petname(request, teacher_id):
teacher = get_object_or_404(Teacher, pk=teacher_id)
owners = Owner.objects.filter(relevantteacher=teacher_id)
if request.method == "POST":
petNameInlineFormSet = PetNameFormSet(request.POST, request.FILES, instance=owners)
if petNameInlineFormSet.is_valid():
petNameInlineFormSet.save()
return HttpResponseRedirect(reverse('success'))
else:
petNameInlineFormSet = PetNameFormSet(instance=owners) //error might be here?
context = {'teacher': teacher, 'owners': owners, 'petNameInlineFormSet' : petNameInlineFormSet}
return render(request, 'petname.html', context)
アップデート:
トレースバックは次のとおりです。
File "hde/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/views.py" in petname
60. petNameInlineFormSet = PetNameFormSet(instance=owners)
File "lib/python2.7/site-packages/django/forms/models.py" in __init__
697. queryset=qs, **kwargs)
File "lib/python2.7/site-packages/django/forms/models.py" in __init__
424. super(BaseModelFormSet, self).__init__(**defaults)