自动填充Django Model字段

时间:2015-09-03 14:30:05

标签: python django

我有点失落。

我想根据同一模型中另一个字段的值,使用另一个Model中的数据自动填充Model字段。

我有2个型号:

class Status(models.Model):
    name = models.CharField()
    value = models.DecimalField()

class Order(models.Model):
    status = models.ForeignKey(Status, to_field="name", related_name='+')
    value = models.ForeignKey(Status, to_field="value", related_name='+')

创建Order时,用户将选择订单的状态(待处理,完成等),并且订单的值应相应地自动填充。也许我累了,但我无法解决这个问题。任何建议都会非常感激。

修改

我对这种结构背后的想法是每个地位都有一个特定的货币价值,即。已完成为20英镑,被放弃为5英镑,待定为0.因此,订单开始为待定,然后将标记为完成或放弃并生成相关值。该值与状态相关联,并应根据订单状态自动更新。

2 个答案:

答案 0 :(得分:2)

您在订单中不需要2个字段。在订单模型中,您需要:

b

您可以按status = models.ForeignKey(Status, related_name='+') order.status.name访问姓名和值。

答案 1 :(得分:0)

对于特定情况,您不需要两个型号。您可以使用choice字段https://docs.djangoproject.com/en/1.8/ref/models/fields/#django.db.models.Field.choices

通过单个模型完成此操作
class Status(models.Model):

STATUS_PENDING = 0
STATUS_COMPLETE = 1
STATUS = (
    (STATUS_PENDING, 'Pending'),
    (STATUS_COMPLETE, 'Complete'),
name = models.CharField(max_length=30, blank=True)
value = models.DecimalField(max_digits=10, decimal_places=2, default=Decimal(0.0))
status = models.IntegerField(default=0, choices=STATUS)