我在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)
答案 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)