Python Django从外键';s级
我想显示另一个类的一个属性。当前类有一个外键,指向我想要获取属性的类Python Django从外键';s级,python,django,model,foreign-keys,Python,Django,Model,Foreign Keys,我想显示另一个类的一个属性。当前类有一个外键,指向我想要获取属性的类 # models.py class Course(models.Model): name = models.CharField(max_length=100) degree = models.CharField(max_length=15) university = models.ForeignKey(University) def __unicode__(self): ret
# models.py
class Course(models.Model):
name = models.CharField(max_length=100)
degree = models.CharField(max_length=15)
university = models.ForeignKey(University)
def __unicode__(self):
return self.name
class Module(models.Model):
code = models.CharField(max_length=10)
course = models.ForeignKey(Course)
def __unicode__(self):
return self.code
def getdegree(self):
return Course.objects.filter(degree=self)
# admin.py.
class ModuleAdmin(admin.ModelAdmin):
list_display = ('code','course','getdegree')
search_fields = ['name','code']
admin.site.register(Module,ModuleAdmin)
所以我要做的是使用“getdegree”获取模块拥有的“度”。我在这里读了几个主题,也尝试了django文档,但我不是一个有经验的用户,所以即使我猜它很简单,我也无法理解。谢谢 这很直截了当 试试这个:
def getdegree(self):
return self.course.degree
您可以安全地执行此操作,因为
课程
不是可为空的字段。如果是,您应该在访问对象的属性之前检查对象是否存在。Wow!真的很简单!!非常感谢你的回答!我对所有这些话题都迷路了,我想我应该使用过滤器。再次感谢!!最后一个问题。是否可以使用“getdegree”使用“list\u filter”过滤结果?因为当我将其添加到“列表过滤器”中时,会出现错误。请参见:
# models.py
class Course(models.Model):
name = models.CharField(max_length=100)
degree = models.CharField(max_length=15)
university = models.ForeignKey(University)
def __unicode__(self):
return self.name
class Module(models.Model):
code = models.CharField(max_length=10)
course = models.ForeignKey(Course)
def __unicode__(self):
return self.code
def getdegree(self):
return Course.objects.filter(degree=self)
# admin.py.
class ModuleAdmin(admin.ModelAdmin):
list_display = ('code','course','getdegree')
search_fields = ['name','code']
admin.site.register(Module,ModuleAdmin)