Django从外键的类中获取属性 [英] Django get attributes from foreign key's class

查看:172
本文介绍了Django从外键的类中获取属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想显示另一个班的一个属性。

 #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
$ b $ class Module(models.Model):
code = models.CharField(max_length = 10)
course = models.ForeignKey(Course)

def __unicode __(self):
return self.code

def getdegree(self):
返回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

这里的文档



您可以安全地做到这一点,因为课程不是一个空的字段。如果是这样,你应该在访问它的属性之前检查对象的存在。


I would like to show one attribute from another class. The current class has a foreign key to class where I want to get the attribute.

# 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)

So what i'm trying to do is to get the "degree" that a module has using the "getdegree". I read several topics here and also tried the django documentation but i'm not an experienced user so even I guess it's something simple, I can't figure it out. Thanks!

解决方案

It is pretty straight forward.

Try this:

def getdegree(self):
    return self.course.degree

Documentation here

You can do this safely because course is not a nullable field. If it were, you should have checked for existence of object before accessing its attribute.

这篇关于Django从外键的类中获取属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆