私はこの問題について多くを検索しますが、解決策はありません。私は得るビュー名 "場所情報"を使用してハイパーリンクされた関係のURLを解決できませんでした。 APIに関連するモデルを含めることができなかったか、このフィールドにlookup_field
属性を正しく設定していない可能性があります。私はdjangoで私のAPIを通してこのリソースにアクセスしたいと思っています。ビュー名 "place-info"を使用してハイパーリンク関係のURLを解決できませんでした。
私はこのようなエラーになっています:私のモデルはお尻です
Could not resolve URL for hyperlinked relationship using view name "place-info". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
を、次のとおりです。
class TourSite(models.Model):
"""Destination place"""
place_name = models.CharField(max_length=100, blank=False, default='')
place_address = models.CharField(max_length=200, blank=False, default='')
place_image = models.ImageField(upload_to="TourSite", blank=True)
def get_place_name(self):
return self.place_name
def get_place_address(self):
return self.place_address
def save(self, *args, **kwargs):
super(TourSite, self).save(*args, **kwargs)
def __str__(self):
return self.place_name
class Info(models.Model):
"""Stores information about the place."""
place_name = models.OneToOneField(
TourSite,
on_delete = models.CASCADE,
primary_key = True,
)
famous_for = models.CharField(max_length=200, blank=True, default='')
brief_info = models.TextField(blank=True, default='')
def get_famous_for(self):
return self.famous_for
def get_brief_info(self):
return self.brief_info
def get_place_name(self):
return self.place_name
def save(self, *args, **kwargs):
super(Info, self).save(*args, **kwargs)
def __str__(self):
return "%s is famous for %s"% (self.place_name, self.famous_for)
マイSerailizer:
class InfoSerializer(serializers.ModelSerializer):
class Meta:
model = Info
fields = '__all__'
class TourSiteSerializer(serializers.HyperlinkedModelSerializer):
place_info = serializers.HyperlinkedIdentityField(view_name='place-info')
class Meta:
model = TourSite
fields = ('id', 'place_name','place_info', 'place_address', 'place_image')
マイビュー:
@api_view(['GET'])
def api_root(request):
return Response({
'places': reverse('places-list', request=request),
})
class TourSiteList(DefaultsMixin, generics.ListAPIView):
queryset = TourSite.objects.all()
search_fields = ("place_name", "place_address",)
serializer_class = TourSiteSerializer
class TourSiteDetail(DefaultsMixin, generics.RetrieveUpdateDestroyAPIView):
queryset = TourSite.objects.all()
serializer_class = TourSiteSerializer
class Info(generics.ListAPIView):
queryset = Info.objects.all()
serializer_class = InfoSerializer
を
私のURL
urlpatterns = [
url(r'^$', views.api_root),
url(r'^places/$', views.TourSiteList.as_view(), name="places-list"),
url(r'^places/(?P<pk>[0-9]+)/$', views.TourSiteDetail.as_view(), name="places-detail"),
url(r'^info/$', views.Info.as_view(), name='place-info'),
]
どのように私はこの問題を解決することができますか?
私は私のコードでインデントを修正しました。私が間違いをしているにもかかわらず、ここでインデントが歪んでいる。 – Kiran