【问题标题】:Manytomany django using existing keyManytomany django 使用现有密钥
【发布时间】:2013-12-02 21:35:31
【问题描述】:

我希望这不是一个重复的问题。我正在尝试在 django 中设置模型。 在模型 1 中,我有一种物品(零件),它们可以一起形成物品类型 2(汽车)。 我从外部接口获取所有这些的价格到模型价格。 如何设置价格 -> 零件和价格 -> 汽车之间的关系。 如果ident属于汽车部分,我不知道我什么时候得到价格。

class parts(models.Model):
   ident = models.CharField("IDENT", max_length = 12, unique = True, primary_key = True)
   name = models.CharField(max_length=30)

class car(models.Model):

   ident = models.CharField("IDENT", max_length = 12, unique = True)    
   start_date = models.DateField()
   end_date = models.DateField()
   parts= models.ManyToManyField(parts)    



class Prices(models.Model):
    ident= models.CharField(max_length=12)
    price = models.DecimalField(max_digits=10, decimal_places= 4)
    date = models.DateField()

    def __unicode__(self):
        return self.ident

   class Meta:
       unique_together = (("ident", "date"),)

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

    我想您不会在模型中存储价格,因为您需要 100% 实时。所以你有;

    汽车模型.py

    from parts.models import parts
    
    name = models.CharField(max_length=100)
    parts = models.ManyToManyField(parts)
    

    希望您不要尝试像全尺寸自动区域类型的交易那样进行开发,但如果它只是一个由许多部分组成的汽车模型对象,那么这就是您想要的基本设置。与零件具有多对多关系允许一辆车拥有许多零件。零件可以属于许多汽车。您不必在零件模型中指定多对多关系,因为您的汽车模型中已经处理了双向通信。

    就价格而言,您可以在您的零件模型中有一个价格数据库字段,但如果这需要实时,您可能希望通过 api 请求该价格并将其直接显示在您的网页中。

    【讨论】:

    • 感谢您的回复。我在另一个加入时遇到问题,并在我的问题中打错了字。这正是加入 2 个数据集(2 个 django 模型)而无需设置密钥的问题。我现在已经通过 .raw 查询中的 sql join 来完成它。我想知道是否有内置的方法可以做到这一点。再次感谢您的快速回复。
    • 抱歉没看懂问题,你问的是如何将多个模型查询到一个查询集中?类似于 from itertools import chain report = chain(car, parts)
    • 是的,这是我的问题。 ident 是表之间的唯一键,我只需要使用“WHERE”子句将价格加入到零件或汽车上。我现在在零​​件的查询集上使用 .raw 解决了它。有没有更好的办法?
    猜你喜欢
    • 2011-11-06
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2012-06-22
    • 1970-01-01
    • 2021-10-04
    • 2013-05-29
    相关资源
    最近更新 更多