В 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']
Теперь, при запуске сайта, я получаю:
Я хочу, чтобы атрибут 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
