Django 渲染详细视图时从对象获取外键的主键
我正在尝试获取要执行的外键关系的id,以筛选模型列表。但是,我收到一个错误,该错误声明:“ForwardManyToneDescriptor”对象没有属性“id”。这是解决这个问题的正确方法,还是我在理解这一切的过程中遗漏了什么 我从该模型创建了一个详图视图: 这是详细视图中的代码:Django 渲染详细视图时从对象获取外键的主键,django,django-views,django-class-based-views,Django,Django Views,Django Class Based Views,我正在尝试获取要执行的外键关系的id,以筛选模型列表。但是,我收到一个错误,该错误声明:“ForwardManyToneDescriptor”对象没有属性“id”。这是解决这个问题的正确方法,还是我在理解这一切的过程中遗漏了什么 我从该模型创建了一个详图视图: 这是详细视图中的代码: 将self.category.id更改为self.object.category.id 国家: 执行此视图时,self.object将包含视图所操作的对象 虽然你也可以只使用categories=self.obje
将
self.category.id
更改为self.object.category.id
国家:
执行此视图时,self.object
将包含视图所操作的对象
虽然你也可以只使用
categories=self.object
而不解析ID。假设我没有忘记一些尴尬的事情。@peterdegloper,很好的观点(尽管我认为你的意思是categories=self.object.category
)。@peterdegloper也可以,categories=self.object.categories,self.object.category
正确,谢谢。关键是Django查询过滤器可以遵循外键关系,而无需指定.id
部分-categories=self.object.category
,而不是categories=self.object.category.id
。
class Collection(models.Model):
title = models.CharField(max_length=32, null=True)
slug = models.SlugField(unique=True, blank=True)
category = models.ForeignKey(Category)
@models.permalink
def get_absolute_url(self):
return ('collection_detail', (),
{
'slug' :self.slug,
})
def __unicode__(self):
return u'%s %s ' % (self.category.id, self.title
)
class collection_detail(DetailView):
model = Collection
def get_context_data(self, **kwargs):
context = super(collection_detail, self).get_context_data(**kwargs)
a = self.category.id
context['collection_list'] = Product.objects.filter(categories=a).order_by('id')
return context