В django-forms, как я могу сделать значения колонки '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']

Теперь, при запуске сайта, я получаю:

enter image description here

Я хочу, чтобы атрибут name в выборе Person отображался вместо того, чтобы отображался объект Person(1), объект Person (2).....

Как я могу это сделать?

В вашей модели Person просто добавьте метод str следующим образом:

class Person(models.Model):
    # Your fields here
    
    def __str__(self):
        return self.name 

Это вернет имя для каждого экземпляра в поле выбора.

Из Другие методы экземпляра модели[Django-doc]

В основном, для отображения объекта в админке Django и в качестве значения, вставляемого в шаблон при отображении объекта

.

В вашей Person модели используйте str()[Django-doc] as

class Person(models.Model):
    name = models.charField(max_length=100)
    .....

    def __str__(self):
        return self.name 
Вернуться на верх