Модель Django передает неверное значение
Я делаю веб-апп с использованием Django Framework. Я делаю форму для создания новых "инцидентов" (эта форма использует модель под названием NewIncidents). Я пытаюсь взять значения под "title" из моей таблицы IncidentsType и использовать их в качестве опций для меню Select в форме. Но происходит нечто странное: в форме опции появляются, но когда вы отправляете форму и проверяете, как она была отправлена (в панели администратора), она показывает .object(n) вместо имени опции.
Например: Результат одного сабмита : в форме показано правильное имя выбора, которое было "Internet", но после сабмита, в панели администратора, оно показало IncidentsType object (3).
Мои модели:
from django.db import models
class NewUsers(models.Model):
name = models.CharField(max_length=38)
user_name = models.CharField(max_length=35)
class NewIncidents(models.Model):
tipo = models.CharField(max_length = 50)
titulo = models.CharField(max_length = 200)
resolucion = models.CharField(max_length = 300)
class IncidentsType(models.Model):
title = models.CharField(max_length = 200)
subtitle = models.CharField(max_length = 200)
description = models.CharField(max_length = 400)
Моя форма:
from django import forms
from django.db import models
from .models import NewIncidents, IncidentsType
class IncidentForm(ModelForm):
incidents = IncidentsType.objects.all()
eleji = []
for incident in incidents:
ttype = incident.title
num = str(incident)
conjunto = (num, ttype)
eleji.append(conjunto)
tipo = forms.ChoiceField(choices=eleji)
class Meta:
model = NewIncidents
fields = ('tipo', 'titulo', 'resolucion')
labels = {
'tipo': 'Tipo de Incidente:',
'titulo': 'Resumen del Incidente:',
'resolucion': 'Resolucion del Incidente:',
}
widgets = {
'tipo': forms.Select(attrs={'class' : 'form-control'}),
'titulo': forms.TextInput(attrs={'class' : 'form-control'}),
'resolucion': forms.TextInput(attrs={'class' : 'form-control'}),
}
на ваших моделях попробуйте определить функцию str
, чтобы помочь django лучше представить объекты модели на странице администратора
пример для IncidentsType
:
class IncidentsType(models.Model):
def __str__(self):
return self.title
В основном эта функция должна возвращать строку, которая представляет объект как имя или название
подробнее об этом можно прочитать в документации здесь