Tôi đang cố gắng chọn một mô hình bằng cách sử dụng mối quan hệ với khóa chung chung, nhưng nó không hoạt động như mong đợi.Phím nước ngoài chung Django và select_related
Tôi nghĩ đó là minh họa tốt hơn và dễ hiểu với mã
class ModelA(models.Model):
created = models.DateTimeField(auto_now_add=True)
class ModelB(models.Model):
instanceA = models.ForeignKey(ModelA)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
class ModelC(models.Model):
number = models.PositiveIntegerField()
bInstances = generic.GenericRelation(ModelB)
# Creating an instance of A and C
aInstance=ModelA.objects.create()
cInstance=ModelC.objects.create(number=3)
# Adding instance of C to the B_set of instance A
aInstance.modelb_set.add(content_object=cInstance)
# Select all ModelA instances that have C as content object? Does not work
whatIWant = ModelA.objects.filter(modelb__content_object=modelCInstance)
# Pseudo-solution, requires calling whatIWant.modelA
whatIWant = cInstance.bInstances.select_related("modelA")
Chỉ cần được rõ ràng, tôi muốn rằng dòng này làm việc: ModelA.objects.filter(modelb__content_object=modelCInstance)
, rõ ràng django không hỗ trợ sử dụng content_object về mối quan hệ của bộ lọc.
Cảm ơn trước!
Bạn mong đợi điều gì? Chúng tôi không thể trả lời câu hỏi nếu không có câu hỏi nào. –
Tôi đã chỉnh sửa bài đăng để làm cho bài đăng rõ ràng hơn, xin lỗi – Clash