【问题标题】:Update model field when creating from another model instance which is ForeignKey related从与 ForeignKey 相关的另一个模型实例创建时更新模型字段
【发布时间】:2019-09-10 19:40:58
【问题描述】:

我启动了车队应用程序并在模型相关文件中创建了一些模型,我做了模型层次结构,在顶部我有汽车品牌,在 ForeignKey 与每个品牌相关的汽车模型下面,以及最终包含的每个汽车 ID 的 ForeignKey汽车库存,称为“类 CarPool”,在这个模型中我有值“car_sale_status = models.BooleanField(default=False)”,我想要实现的是每次我从卖家的关联 ForeignKey 创建一个实例时自动更新“car_sale_status = models.BooleanField(default=False)”为True

请指教

谢谢

class CarPool(models.Model):

    # Relationship Fields
    car_inventory = models.ForeignKey(
        'cardealer.CarTypes',
        on_delete=models.CASCADE, related_name="carpools", 
    )
    car_id = models.CharField(max_length=30,default="")
    car_location = GeopositionField()
    car_sale_status = models.BooleanField(default=False)


    YEAR_CHOICES = []


    for r in range(1980, (datetime.datetime.now().year+1)):
        YEAR_CHOICES.append((r,r))


    year_manufacture = models.IntegerField(('year_manufacture'), choices=YEAR_CHOICES, default=datetime.datetime.now().year)


    def __str__(self):
        return self.car_id

    def __unicode__(self):
        return self.car_inventory

class CustomerBuyer(models.Model):

    buyer_car_buy = models.ForeignKey(
        'cardealer.CarPool',
        on_delete=models.CASCADE, related_name="customer_buyer",default='0'
    )
    buyer_private_name = models.CharField(max_length=80,default='')
    buyer_family_name = models.CharField(max_length=80,default='')
    buyer_private_id = models.IntegerField(default=0)
    transaction_date = models.DateTimeField(default=datetime.datetime.now())
    transaction_amount = models.IntegerField(default=0)




    def __str__(self):
        return self.buyer_private_name + ' '+ self.buyer_family_name

    def __unicode__(self):
        return self.buyer_private_name + ' '+ self.buyer_family_name

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    如果我理解正确,只需扩展“保存”方法

    class CustomerBuyer(models.Model):
    
        buyer_car_buy = models.ForeignKey(
            'cardealer.CarPool',
            on_delete=models.CASCADE, related_name="customer_buyer",default='0'
        )
        buyer_private_name = models.CharField(max_length=80,default='')
        buyer_family_name = models.CharField(max_length=80,default='')
        buyer_private_id = models.IntegerField(default=0)
        transaction_date = models.DateTimeField(default=datetime.datetime.now())
        transaction_amount = models.IntegerField(default=0)
    
        def __str__(self):
            return self.buyer_private_name + ' '+ self.buyer_family_name
    
        def __unicode__(self):
            return self.buyer_private_name + ' '+ self.buyer_family_name
    
        def save(self, *arg, **kwargs):
            super(CustomerBuyer, self).save(*args, **kwargs)
            self.buyer_car_buy.car_sale_status = True
            self.buyer_car_buy.save()
    

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 2017-12-28
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多