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는 항상 없음. 그것의 이유는 무엇입니까? 나는 나쁜 필터 매개 변수에 db에서 대화를 얻기에있는 말썽 만 해결하기 위하여 가정되었다, 그러나 지금 나는 그것에 관하여 의혹이있다. 다른 뭔가?
예, 감사, 그것은 사실입니다. 그러나 어쨌든 문제는 해결되지 않습니다. target_dialogue가 None이라는 문제가 계속 발생합니다. 그러므로 그것 때문에 뿐만이 아닙니다. 질문에 코드를 추가하여 명확히합니다. –
단순한 participants__in = [사용자, 동반자]가 아니라 참여자 _in = [사용자 및 동반자] –
및 해당 부분은 http://stackoverflow.com/questions/8618068/django-filter-queryset-in-for-every를 참조하십시오. -item-in-list – maverick