gpt4 book ai didi

mysql - Django 添加字段到查询集

转载 作者:行者123 更新时间:2023-11-28 23:08:57 24 4
gpt4 key购买 nike

您好,我的 Django 项目中有 3 个模型,当用户发送请求时,我有他的 dealer_id 我需要返回查询集,其中包含 Material 表中有关 Material 的信息,并为每一行添加最后一个模型的 discount_percent,其中dealer_id = 当前 dealer_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)

最佳答案

这看起来像是一组通过运行 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')

现在,您应该能够在查询中遵循这些关系。不幸的是,您的问题不够清楚,无法知道您真正想做什么;您应该给出所需输出的示例。

关于mysql - Django 添加字段到查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46468157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com