在 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数据库模型包含nameprofile_pic等属性

forms.py中,我有:

class StatusForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(StatusForm, self).__init__(*args, **kwargs)

    class Meta:
            model = Status
            fields = ['x']

现在,当 运行 网站时,我得到:

我希望 Personname 属性显示在选项中,而不是显示 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