在 django-forms 中,如何使外部数据库的 'name' 列的值在选择中可见
In django-forms, how can I make the values of 'name' column of foreign database visible in the selection choices
我的 Django 站点有一个名为 Status
的数据库模型,其中:
class Status(models.Model):
x = models.ForeignKey(Person, on_delete=models.SET_NULL, null = True)
此处引用的Person
数据库模型包含name
、profile_pic
等属性
在forms.py
中,我有:
class StatusForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(StatusForm, self).__init__(*args, **kwargs)
class Meta:
model = Status
fields = ['x']
现在,当 运行 网站时,我得到:
我希望 Person
的 name
属性显示在选项中,而不是显示 Person 对象 (1)、Person 对象 (2).....
我怎样才能做到这一点?
在您的 Person
模型中只需添加 str
方法如下:
class Person(models.Model):
# Your fields here
def __str__(self):
return self.name
这将 return 选择字段中每个实例的名称。
来自Other model instance methods[Django-doc]
Most notably, to display an object in the Django admin site and as the value inserted into a template when it displays an object
在您的 Person
模型中使用 str()[Django-doc] 作为
class Person(models.Model):
name = models.charField(max_length=100)
.....
def __str__(self):
return self.name
我的 Django 站点有一个名为 Status
的数据库模型,其中:
class Status(models.Model):
x = models.ForeignKey(Person, on_delete=models.SET_NULL, null = True)
此处引用的Person
数据库模型包含name
、profile_pic
等属性
在forms.py
中,我有:
class StatusForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(StatusForm, self).__init__(*args, **kwargs)
class Meta:
model = Status
fields = ['x']
现在,当 运行 网站时,我得到:
我希望 Person
的 name
属性显示在选项中,而不是显示 Person 对象 (1)、Person 对象 (2).....
我怎样才能做到这一点?
在您的 Person
模型中只需添加 str
方法如下:
class Person(models.Model):
# Your fields here
def __str__(self):
return self.name
这将 return 选择字段中每个实例的名称。
来自Other model instance methods[Django-doc]
Most notably, to display an object in the Django admin site and as the value inserted into a template when it displays an object
在您的 Person
模型中使用 str()[Django-doc] 作为
class Person(models.Model):
name = models.charField(max_length=100)
.....
def __str__(self):
return self.name