【问题标题】:Linking two models automatically in django在 django 中自动链接两个模型
【发布时间】:2020-10-13 22:56:37
【问题描述】:

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

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)

【问题讨论】:

    标签: django django-models django-forms django-views django-templates


    【解决方案1】:

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

    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

    【讨论】:

    • 这是怎么回事?我正在构建一个发票应用程序并希望将订单链接到公司,所以我创建的任何公司都想链接其订单
    • 那么问题没有明确说明this company 没有告诉我有关其他公司的任何信息。在这种情况下,解决方案完全不同
    • 我稍后会发布与您的问题相关的答案
    • 您能否创建另一个问题来准确指定您的需求,以便其他人以后可以将其用作学习资源?尝试尽可能简单地描述您的问题/问题,但同时要准确 - 我将在您的新问题中发布完整答案
    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多