我有一个用例,在用户配置文件模型中,用户详细信息被存储。其中一个字段是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())