1
なぜtarget_dialogueは常にNoneですか?ManyToManyFieldでフィルタを使用してオブジェクトを取得する方法
モデル:
class Dialogue(models.Model):
name = models.CharField(max_length=30, blank=True)
is_conference = models.BooleanField(default=False)
participants = models.ManyToManyField(
Person,
related_name='dialogues',
)
def __str__(self):
return self.name or str(self.pk)
そして、私は参加者フィールド2つのオブジェクトに含まれている、適切な対話を取得したいビューの
- ユーザーと仲間に。このダイアログが存在しない場合、私はそれを作成します: target_dialogue = None
try:
target_dialogue = Dialogue.objects.get(is_conference=False,participants__in=[user, companion])
except ObjectDoesNotExist:
target_dialogue = Dialogue()
target_dialogue.save()
target_dialogue.participants.add(user)
target_dialogue.participants.add(companion)
finally:
return render(request, 'dialogues/dialogue.html', {
'dialogue': target_dialogue,
})
しかし、target_dialogueは常にNoneです。それの理由は何ですか?私はDBからの対話を得るためのトラブルだけを解決することになっていましたが、今は疑問があります。多分何か?
をはい、ありがとうございます、それは本当です。しかし、とにかく問題は解決されません。私はtarget_dialogueがNoneであるという問題が引き続きある。したがって、それだけではありません。私は質問にそれを明確にするためのコードを追加します。 –
また、単にparticipates__in = [user、companion]ではなくparticipators__in = [user and companion] –
とその部分についてはhttp://stackoverflow.com/questions/8618068/django-filter-queryset-in-for-everyを参照してください。 -item-in-list – maverick