Как сделать, это присоединяется к запросу в Django

Если вы используете SQL Server Express, то задание агента не включено. Пожалуйста, попробуйте перейти на другие версии (Standard, Enterprise и т. Д.).

11
задан Frank Krueger 13 May 2009 в 23:34
поделиться

3 ответа

This can be done in Django, but you will need to restructure your models a little bit differently:

class Product(models.Model):
    name = models.CharField(max_length=50)
    product_rank = models.OneToOneField('ProductRank')

class ProductRank(models.Model):
    rank = models.IntegerField(default=0)

Now, when fetching Product objects, you can following the one-to-one relationship in one query using the select_related() method:

Product.objects.filter([...]).select_related()

This will produce one query that fetches product ranks using a join:

SELECT "example_product"."id", "example_product"."name", "example_product"."product_rank_id", "example_productrank"."id", "example_productrank"."rank" FROM "example_product" INNER JOIN "example_productrank" ON ("example_product"."product_rank_id" = "example_productrank"."id")

I had to move the relationship field between Product and ProductRank to the Product model because it looks like select_related() follows foreign keys in one direction only.

14
ответ дан 3 December 2019 в 05:13
поделиться

Добавьте вызов метода select_related () QuerySet, хотя я не уверен, что захватывает ссылки в обоих направлениях, это наиболее вероятный ответ.

2
ответ дан 3 December 2019 в 05:13
поделиться

Я не проверял, но:

products = Product.objects.filter(categories__pk=1).select_related()

Следует захватить каждый экземпляр.

5
ответ дан 3 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: