【问题标题】:Django: choose 'company' from company model, if company not present create oneDjango:从公司模型中选择“公司”,如果公司不存在,则创建一个
【发布时间】:2017-03-30 13:03:13
【问题描述】:

我有一个在 UserProfile 模型中存储用户详细信息的用例。其中一个字段是 user_company_name。

class UserProfile(BaseModel):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    user_company_name = models.CharField(max_length=254)

我希望该字段不是CharField,而是一个ChoiceField,下拉数据库中当前存在的公司(名称)。如果用户的当前公司不在下拉列表中,我计划为用户提供将他或她的公司添加到数据库的选项。 假设我有一个这样的公司模型:

class Company(BaseModel):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

user_company_name 字段的 UserProfile 模型中我的字段选择应该是什么。

【问题讨论】:

标签: python django django-models django-forms


【解决方案1】:

为什么不将ForeignKey 添加到UserProfile 模型?下面的例子。

class UserProfile(BaseModel):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    user_company = models.ForeignKey(Company)

【讨论】:

    【解决方案2】:

    此字段需要 ForeignKey user_company_name

    https://docs.djangoproject.com/en/1.10/ref/models/fields/#foreignkey 阅读此文档

    【讨论】:

      【解决方案3】:

      您可以在 user_company 的模型中使用外键,在表单中使用 ChoiceField 来获取下拉菜单。

      检查下面的代码:-

      在模型中:-

      class UserProfile(BaseModel):
      first_name = models.CharField(max_length=100)
      last_name = models.CharField(max_length=100)
      user_company = models.ForeignKey(Company)
      

      在表格中:-

      user_company = forms.ModelChoiceField(queryset=Company.objects.all())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        • 1970-01-01
        • 2018-03-04
        相关资源
        最近更新 更多