Tôi đã đọc tài liệu nhưng vẫn gặp lỗi. Tôi có Người dùng đặt Đơn đặt hàng cho các đối tượng Danh mục. Tôi muốn tạo truy vấn trả về tất cả Người dùng có Đơn đặt hàng chứa một mục Catalogue cụ thể.Các mối quan hệ mở rộng Django
Dưới đây là mô hình của tôi:
class Catalog(models.Model):
name = models.CharField(max_length=100)
price = models.IntegerField()
def __unicode__(self):
return self.name
class Annual(models.Model):
catalog = models.OneToOneField(Catalog, blank=True, null=True, related_name='annual_products')
year_id = models.IntegerField(max_length=4)
start_date = models.CharField(max_length=10)
end_date = models.CharField(max_length=10)
date = models.DateTimeField(auto_now_add=True, blank=True)
def __unicode__(self):
return unicode(self.year_id)
class Order(models.Model):
user = models.ForeignKey(User, related_name='who_ordered')
select = models.ManyToManyField(Catalog, related_name='annuals_ordered', blank=True, null=True)
def __unicode__(self):
return unicode(self.user)
Dưới đây là truy vấn Tôi đã cố gắng:
Catalog.objects.filter(order__select__annual='2014')
Điều đó có ý nghĩa hơn nhiều, bắt đầu với Người dùng. Cảm ơn. Tôi đã có thể nhận được truy vấn hoạt động chính xác với PK: User.objects.filter (order__select = '2'). Tôi muốn rõ ràng hơn, giống như truy vấn của bạn. Tôi đang trả lại lỗi sau đây mặc dù: Các trường quan hệ không hỗ trợ tra cứu lồng nhau. – byrdr
Ah, không thấy rằng bạn đã xác định liên quan. Hãy thử 'order__select__annual_products__year_id –
Tôi nghĩ rằng đây là đúng cách ... User.objects.filter (who_ordered__select__annual_products__id = 1) hoặc User.objects.filter (who_ordered__select__annual_products = annual_obj) tham chiếu tên liên quan phải phù hợp với từng tham chiếu. Tôi đã cập nhật câu trả lời của mình. –