我的models.py:
class Departement(models.Model):
departNumber = models.PositiveSmallIntegerField(default=0, primary_key= True)
departName = models.CharField(max_length=100)
def __unicode__(self):
return self.departNumber
我的admin.py:
class DepartementAdmin(admin.ModelAdmin):
list_display = ('departNumber', 'departName')
admin.site.register(Departement, DepartementAdmin)
问题是,我无法获得任何“Departement”对象。我尝试过.get(),. filter()或.all()。在这两种情况下,它都会返回并且不会打印部门编号。
<Departement: Departement object>
我做错了什么?
编辑:更具体地说,在数据库中,我有一个包含部门名称和编号的表“Departement”。例如,如果我输入:
Departement.objects.filter(departNumber=2)
它应该给我一个“Var”的离开名称,因为“Var”是以2作为主键的部门。
答案 0 :(得分:0)
将__unicode__
更改为__str__
方法并查看。它应该与python 3一起使用。
class Departement(models.Model):
departNumber = models.PositiveSmallIntegerField(default=0, primary_key= True)
departName = models.CharField(max_length=100)
def __str__(self):
return self.departNumber
为了使它与python 2兼容,你可以做以下建议: https://docs.djangoproject.com/en/1.10/ref/models/instances/
答案 1 :(得分:0)
你说:
Departement.objects.filter(departNumber=2)
应该给我一个离开名称 那是&#34; Var&#34;自从&#34; Var&#34;是以2为主键的部门。
因此,您依靠__unicode__
方法返回部门名称(即使您__unicode__
方法的实现当前返回部门编号)。
为什么不直接访问该属性?
dept = Departement.objects.filter(departNumber=2)
dept.departName
从长远来看,它使代码更易于维护。
但要回答为什么它无法正常工作,我们需要知道你是否使用python 2或3。
如果为3,则按照此处所述将方法名称更改为__str__
:Why __unicode__
doesn't work but __str__
does?