对象没有属性 - HyperlinkedRelatedField

时间:2015-11-13 04:58:02

标签: django django-rest-framework

我正在尝试将超链接添加到具有特定“类别”ID的“发布”列表

我尝试构建的URL是/ categories /

models.py

class Categories(models.Model):
    ....
    idcategories = models.AutoField(db_column='idCategories', primary_key=True)

class Postings(models.Model):
    idpostings = models.AutoField(db_column='idPostings', primary_key=True)  # Field name made lowercase.
    idcategories = models.ForeignKey(Categories, db_column='idCategories')  # Field name made lowercase.
    ....

serializers.py

class CategorySerializer(serializers.HyperlinkedModelSerializer):
    postings = serializers.HyperlinkedRelatedField(many=True, view_name='postings-detail', read_only=True)

    class Meta:
        model = models.Categories
        fields = ('url', 'idcategories', 'categoriesname', 'categoryimageurl', 'postings')

views.py

url(r'postings/(?P<pk>[0-9]+)/$', postings_detail, name='postings-detail'),

我已经设置了相应的视图,如果我删除了CategorySerializer上的HyperlinkedRelatedField,那么该视图可以正常工作

基本上我想要:

JSON:
categoryname : <name>,
postings : [<list_of_postings>]

因此,使用上面的代码,我收到以下错误:

在/ categories /的

AttributeError “类别”对象没有属性“发布”

1 个答案:

答案 0 :(得分:3)

默认情况下,DRF会通过您在模型中没有的帖子名称查看相关对象。

将idcategories related_name设置为“postss”或在序列化程序的帖子中使用源序列化程序的字段参数source,并将其设置为“postings_set”。