Django将字段添加到查询集

时间:2017-09-28 11:36:26

标签: mysql django django-models django-queryset

您好我的django项目中有3个模型,当用户发送请求时,我有dealer_id我需要返回查询集,其中包含有关材料表中材料的信息,并且每行添加来自最后一个模型的discount_percent,其中dealer_id =当前dealer_id和行ID。如果你有答案,请帮助我。

模型

class Material(models.Model):
    id = models.AutoField(primary_key=True)
    color = models.IntegerField() 
    name = models.CharField(max_length=100)
    material_width = models.IntegerField()
    price = models.BigIntegerField(default=0)  

class Dealer(models.Model):
    id = models.AutoField(primary_key=True)
    dealer_name = models.CharField(max_length=100)
    dealer_phone = models.CharField(max_length=13, unique=True)
    dealer_email = models.CharField(max_length=150, null=False, unique=True)
    dealer_firm_name = models.CharField(max_length=100, null=True)
    dealer_address = models.CharField(max_length=100, null=True)
    dealer_unp = models.CharField(max_length=9, null=True)
    dealer_amount = models.FloatField(default=0.0)
    user_id = models.BigIntegerField(unique=True) 

class MaterialDealerPrice(models.Model):
    id = models.AutoField(primary_key=True)
    dealer_id = models.BigIntegerField(null=False)
    material_id = models.BigIntegerField(null=False)
    discount = models.FloatField(null=True, default=0.0)

2 个答案:

答案 0 :(得分:1)

这看起来像是一组通过运行inspectdb自动创建的模型。您应该始终将该输出视为初稿;有很多东西需要手动完成整理。

首先,您的MaterialDealerPrice模型需要具有Dealer和Material的外键:

class MaterialDealerPrice(models.Model):
    dealer = models.ForeignKey('Dealer', null=False)
    material = models.ForeignKey('Material', null=False)
    discount = models.FloatField(null=True, default=0.0)

其次,你应该认识到这个模型实际上是多对多关系的直表。

class Material(models.Model):
    ...
    dealers = models.ManyToManyField('Dealer', through='MaterialDealerPrice')

现在,您应该能够在查询中关注这些关系。不幸的是,你的问题不够明确,无法知道你真正想做什么;你应该给出一个所需输出的例子。

答案 1 :(得分:0)