首页 > 解决方案 > 在 django 中自动链接两个模型

问题描述

我想在创建新订单时链接到这家公司。现在,我必须手动选择它

class Company(models.Model):
    name = models.CharField(max_length=64)
    address = models.TextField(max_length=250)

class Order(models.Model):
    company = models.ForeignKey('Company', on_delete=models.CASCADE)
    order_date = models.CharField(max_length=64)
    order_notes = models.TextField(max_length=250)

标签: djangodjango-modelsdjango-formsdjango-viewsdjango-templates

解决方案


首先,如果每个订单都与该特定公司相关联,则创建外键是过度的。如果您出于某种原因仍想这样做,这里是解决方案。

class Order(models.Model):
    company = models.ForeignKey('Company', on_delete=models.CASCADE)
    order_date = models.CharField(max_length=64)
    order_notes = models.TextField(max_length=250)

    def save(self, *args, **kwargs):
        # u have to have a new order in db
        super().save(*args, **kwargs)
        # then assing this particular company
        self.company = Company.objects.get(name='the_company_name', address='the_company_address')
        # and again save the changes
        super().save(*args, **kwargs)

但如果您想这样做,请考虑让公司nameaddress unique_together


推荐阅读