我的Apuntes
文件中有一个此模型models.py
:
class Apuntes(models.Model):
PRIVACY_CHOICES=(
('public', 'Público'),
('private', 'Privado'),
('password', 'Protegido')
)
owner=models.ForeignKey(User)
privacy=models.CharField("Privacidad", max_length=10, choices=PRIVACY_CHOICES, default='private')
password=models.CharField("Contraseña", max_length=20, blank=True)
asignatura=models.ForeignKey(Asignaturas)
datos=models.FileField()
descripcion=models.CharField(max_length=150)
added=models.DateTimeField(auto_now=True)
我还在ApuntesForm
中使用此模型forms.py
创建了一个表单:
class ApuntesForm(forms.ModelForm):
class Meta:
model = Apuntes
fields = ['privacy', 'password', 'asignatura', 'datos', 'descripcion']
widgets = {
'descripcion': forms.Textarea(attrs={'class': 'form-control'}),
'privacy': forms.Select(attrs={'class': 'form-control'}),
'password': forms.PasswordInput(attrs={'class': 'form-control'}),
'asignatura': forms.Select(attrs={'class': 'form-control'}),
}
当我尝试在视图中使用此表单时,Asignaturas
选择字段无法正常显示:
我希望它在数据库中显示nombre
列,而不仅仅是通用对象。
答案 0 :(得分:1)
试试这个......
class Asignaturas(models.Model):
...
#your fields
...
nombre = models.CharField(max_length=255)
def __unicode__(self):
return self.nombre
)
答案 1 :(得分:1)
来自文档:
__str__
Model.__str__()
无论何时,都会调用__str__()
方法 在对象上调用str()
。 Django在许多地方使用str(obj)
。 最值得注意的是,在Django管理站点中显示一个对象并作为 值在显示对象时插入到模板中。因此,您 应该总是返回一个很好的,人类可读的表示形式 来自__str__()
方法的模型。例如:
from django.db import models
from django.utils.encoding import python_2_unicode_compatible`
@python_2_unicode_compatible # only if you need to support Python 2
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
def __str__(self):
return '%s %s' % (self.first_name, self.last_name)
如果您想要与Python 2兼容,您可以装饰您的模型类 如上所示python_2_unicode_compatible()。
Puam的答案可以在Python 2.7中使用,但是如果你在3中,你会想要阅读 str 和 unicode Django docs中的方法部分' Port to Python 3