如何在django中加入

时间:2018-03-22 12:15:18

标签: django join django-queryset

我有下一个型号:

class User(models.Model):
    id = models.IntegerField(primary_key=True)


class UserMarketSubscription(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    market = models.ForeignKey('Market', on_delete=models.CASCADE)
    date_in = models.DateField(default=year_back)
    date_out = models.DateField(default=year_back)

class Market(models.Model):
    name = models.CharField(max_length=50)

不久之后,我的用户可以在多个市场上下载。

最后,我想获得包含所有用户及其订阅信息的QuerySet(每行1个用户)。所以我想得到下一个field_names(' id',' market1_date_in',' market1_date_out',' market2_date_in' ...,&# 39; marketN_date_out)

我已经尝试过注释,但它不起作用,因为它需要注释上的确切字段名称,而且我无法在每个市场的圆柱形区域内完成。

' values_list'方法返回一个具有不同订阅详细信息的用户的许多对象,我希望在一个对象中包含所有细节。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以在queryset

中使用select_related和prefetch_related

see the docs

答案 1 :(得分:0)

您可以尝试:

user_obj.usermarketsubscription_set()