Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 渲染详细视图时从对象获取外键的主键_Django_Django Views_Django Class Based Views - Fatal编程技术网

Django 渲染详细视图时从对象获取外键的主键

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

我正在尝试获取要执行的外键关系的id,以筛选模型列表。但是,我收到一个错误,该错误声明:“ForwardManyToneDescriptor”对象没有属性“id”。这是解决这个问题的正确方法,还是我在理解这一切的过程中遗漏了什么

我从该模型创建了一个详图视图: 这是详细视图中的代码:
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