如何在Django中从多个模型中选择列?

2024-04-23 06:45:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在模型.py在

class Custom_user_model(User):

    daily_target = models.IntegerField()
    monthly_target = models.IntegerField()
    yearly_target = models.IntegerField()
    weekly_target = models.IntegerField()
    call_target = models.IntegerField()
    email_target = models.IntegerField()
    meeting_target = models.IntegerField()
    added_under = models.IntegerField()
    profile_pic = models.TextField()
    doj = models.DateTimeField(default='')
    location_id = models.IntegerField()
    locked = models.BooleanField()
    default_currency = models.IntegerField()
    date_change_permission = models.BooleanField()
    deal_back_log = models.BooleanField()
    created_date=models.DateTimeField(auto_now_add=True)
    role_id=models.ForeignKey('user_Roles')
    profile_pic = models.FileField(upload_to='.')
    objects = UserManager()

class Deal(models.Model):

    a_choices = ((0,'yes'),(1,'no'))
    approved = models.IntegerField(choices=a_choices,default=1)
    user_id = models.ForeignKey('Custom_user_model')
    company_id = models.IntegerField()
    contact_id = models.IntegerField()
    deal_title=models.CharField(max_length=200)
    deal_value = models.CharField(max_length=20)
    currency_id = models.IntegerField()
    process_id = models.IntegerField()
    expected_close_date = models.DateField(default='')
    closed_date = models.DateField()
    deal_milestone=models.IntegerField()
    created=models.DateTimeField(auto_now_add=True)
    last_modified=models.DateTimeField(auto_now_add=True)
    s_choices = ((0,'active'),(1,'won'),(2,'junk'),(3,'lost'))
    status = models.IntegerField(choices=a_choices,default=0)
    type = models.CharField(max_length=50, default='deal')



class user_Roles(models.Model):
    code = models.CharField(max_length=20)
    description = models.CharField(max_length=30)
    permitted_menus = models.CharField(max_length=200)
    created = models.DateTimeField(auto_now_add=True)

在视图.py在

在这里,我编写了从三个模型中获取列的代码。但是

Deal.objects.filter(user_id__role_id_id=1).select_related()未返回任何内容,Deal.objects.filter(user_id__role_id_id=1).select_related().values()仅从交易模型返回字段。将关系指定为值时,它显示“无字段错误”。如何从多个模型中选择字段?在

^{pr2}$

Tags: 模型iddefaulttargetautodatemodelslength
2条回答

如果要选择相关值,则必须在values()中指定所需的所有参数。否则,您将只获得用户模型的foreignkey。尝试使用__从用户模型中添加所需的值:

query = query.filter(created__range=start_date_range).values('approved', ..., 'user_id__daily_target', 'user_id__username')

顺便说一句,如果你正在创建一个API,你应该看看django-rest-framework

试试这个

Deal.objects.filter(user_id__role_id_id=1, created__range=start_date_range).select_related('user_id').values()

或将必需字段指定为values()的参数。

相关问题 更多 >