Tôi có một hệ thống có mối quan hệ nhiều với một số mô hình (nói 1 a -> nhiều b) và nhiều mô hình có mối quan hệ 1-1 với một mô hình khác (nói 1 b -> 1 c). Rút ra như vậy:Django không thể xác định queryset để chuỗi một-nhiều với mối quan hệ một-một
/--- b1 --- c1
/
a ---- b2 --- c2
\
\--- b3 --- c3
tôi đã xác định để tạo ra một phương pháp trong đó thu thập tất cả các 's c
tương ứng với a
.
Với hệ thống mô hình có cấu trúc giống nhau, tốt nhất tôi có thể đưa ra được thể hiện trong phương pháp: Person.find_important_treats()
.
Có cách nào tốt hơn không liên quan quá nhiều cuộc gọi đến cơ sở dữ liệu không?
from django.db import models
class Person(models.Model):
""" The 'a' from my above example """
def find_important_treats(self):
return (pet.treat for pet in self.pets)
class Pet(models.Model):
""" The 'b' from my above example """
owner = models.ForeignKey(
to=Person,
related_name='pets'
)
favourite_treat = models.ForeignKey(
to=Treat,
)
class Treat(models.Model):
""" The 'c' from my above example """
pass
Có thể cùng những dòng này bạn sẽ tìm thấy câu trả lời 'Treat.objects.filter (pet__owner__pk = PersonId) '. – aquaman
Bạn có thể cụ thể hơn không, bạn có được trộn lẫn trong toàn bộ các vật thể xử lý hoặc không? Điều đó gây ra một khác biệt lớn! – DhiaTN
@DhiaTN, tôi muốn toàn bộ điều trị (tham lam với tôi), vì nó có thông tin tôi muốn hiển thị trong mẫu của tôi. – Splatmistro