我正在尝试将超链接添加到具有特定“类别”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 “类别”对象没有属性“发布”
答案 0 :(得分:3)
默认情况下,DRF会通过您在模型中没有的帖子名称查看相关对象。
将idcategories related_name
设置为“postss”或在序列化程序的帖子中使用源序列化程序的字段参数source
,并将其设置为“postings_set”。