Django:从公司模型中选择'company',如果公司不存在,请创建一个



我有一个用例,在用户配置文件模型中,用户详细信息被存储。其中一个字段是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而是选择字段,并下拉列表当前存在于数据库中的公司(名称(。如果用户的当前公司不在下拉列表中,我计划为用户提供将其公司添加到数据库的选项。假设我有一个这样的公司模型:

class Company(BaseModel):
    name = models.CharField(max_length=100)
    def __str__(self):
        return self.name

我在用户配置文件模型中的字段选择应该是什么user_company_name字段。

为什么不直接将ForeignKey添加到UserProfile模型中?下面是示例。

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

您需要此字段的外键 user_company_name

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

您可以在模型中使用外键进行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())

最新更新