gpt4 book ai didi

python - 无法解析超链接关系的 URL

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:35 25 4
gpt4 key购买 nike

我尝试在 django-rest-framework 上制作 API:

模型.py

class ArticleCategory(SystemModel):
name = models.CharField(blank=False, max_length=255)
category_slug = models.SlugField(blank=True, null=False)
def save(self, *args, **kwargs):

class ArticleItem(SystemModel):
name = models.CharField(blank=False, max_length=255)
item_slug = models.SlugField(blank=True, null=False)
text = models.TextField(blank=True)
article_category = models.ForeignKey('article.ArticleCategory', blank=False, null=False, related_name='article_item_set')

序列化器.py

class ArticleCategorySerializer(serializers.HyperlinkedModelSerializer):
article_items = serializers.HyperlinkedIdentityField('article_item_set', view_name='article:item')
class Meta:
model = ArticleCategory
fields = ('url', 'name', 'category_slug', 'article_items',)

class ArticleItemSerializer(serializers.HyperlinkedModelSerializer):
article_category = serializers.HyperlinkedIdentityField('article_category', view_name='article:category')
class Meta:
model = ArticleItem
fields = ('url', 'name', 'item_slug', 'text', 'article_category')

url.py

#namespace='article'
urlpatterns = patterns('',
url(r'^(?P<category_slug>[\w-]+)/(?P<item_slug>[\w-]+)', ArticleItemDetail.as_view(), name='item'),
url(r'^(?P<category_slug>[\w-]+)', ArticleItemListByCategory.as_view(), name='category'),
url(r'^', ArticleItemList.as_view(), name='item-list')
)

和 api.py

class ArticleItemDetail(generics.RetrieveUpdateDestroyAPIView):
model = ArticleItem
serializer_class = ArticleItemSerializer
lookup_field = 'article_slug'

class ArticleItemListByCategory(generics.ListAPIView):
model = ArticleItem
serializer_class = ArticleItemSerializer
def get_queryset(self):
queryset = super(ArticleItemListByCategory, self).get_queryset()
return queryset.filter(article_category__category_slug=self.kwargs.get('category_slug'))

当我尝试获取项目列表(http://127.0.0.1:8000/article/)时,出现错误

Exception at /article/

Could not resolve URL for hyperlinked relationship using view name "articleitem-detail". You may have failed to include the related model in your API, or incorrectly configured the lookup_field attribute on this field.

如何解决这个问题?我想保存这个 url 结构,同时为每个对象都有 url 字段:

文章项目

{
"name": "Article item 1",
"url": "http://127.0.0.1/article/article-category-1/article-item-1",
"item_slug": "article-item-1",
"text": "\u0432\u043e\u043b\u043e\u0432\u043b\u043e",
"article_category": {
"name": "Article category 1",
"url": "http://127.0.0.1/article/article-category-1",
}
},

文章类别

{
"name": "Article category 1",
"url": "http://127.0.0.1/article/article-category-1",
"category_slug": "article-category-1",
"text": "\u0432\u043e\u043b\u043e\u0432\u043b\u043e",
"article_items": [
{
"name": "Article item 1",
"url": "http://127.0.0.1/article/article-category-1/article-item-1",
},
{
"name": "Article item 2",
"url": "http://127.0.0.1/article/article-category-1/article-item-2",
},
]
},

最佳答案

您的查找字段指向数据库中不存在的article_slug。它实际上应该是item_slug。这似乎导致了错误。

关于python - 无法解析超链接关系的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22907873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com