模型定义

时间:2015-08-07 15:26:47

标签: python django model

我在Django 1.8中得到了这个模型定义:

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=200)

    def __str__(self):
            return "%s (%s)" % (self.name, self.number)

class Item(models.Model):
    name = models.CharField(max_length=200)
    number = models.CharField(max_length=10)
    category_id = models.ForeignKey(Category)

    def __str__(self):
            return "(%s) %s" % (self.number, self.name)

如何在Item模型中访问类别名称?

当我尝试这个时,我得到一个错误说,没有属性'类别':

def __str__(self):
    return "(%s) %s - %s" % (self.number, self.name, self.category.name)

1 个答案:

答案 0 :(得分:1)

您最后不需要定义ForeignKey字段_id,因为Django本身就是这样做的。

根据ForeignKey database representation上的Django 1.8文档:

  

在幕后,Django将"_id"附加到要创建的字段名称   它的数据库列名。

您可以改为执行以下操作:

class Item(models.Model):
    name = models.CharField(max_length=200)
    number = models.CharField(max_length=10)
    category = models.ForeignKey(Category) # remove '_id' at the end 

    def __str__(self):
        return "(%s) %s - %s" % (self.number, self.name, self.category.name)