Я часами пытался отладить проблему.Я не смог понять, как настроить HyperlinkedModelSerializer.
Не могли бы вы указать мне, что я делаю неправильно?Кроме того, есть ли хороший учебник по пониманию гиперссылок лучше, чем официальные документы?Спасибо!
Ошибка
Неправильно настроен в / settings / Не удалось разрешить URL-адрес для связи с гиперссылкой, используя имя представления «Сведения о настройках».Возможно, вам не удалось включить связанную модель в ваш API или неправильно настроить атрибут lookup_field
в этом поле.
.....
Во время обработки вышеуказанного исключения (обратноедля "Подробной информации о настройках" с аргументами ключевых слов "{'settings_id': UUID ('24aee4eb-8f71-4336-8c36-a96c9e4447c9')}" не найден. 1 образец (-ы) пробовал: ['settings // $']),произошло другое исключение:
models.py
class Settings(models.Model):
# General
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
createdAt = models.DateTimeField(auto_now_add=True)
updatedAt = models.DateTimeField(auto_now=True)
# Token
publicToken = models.CharField(max_length=100)
secretToken = models.CharField(max_length=100)
serializers.py
class SettingsListSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(
view_name = "Settings Detail",
lookup_field='id',
lookup_url_kwarg='settings_id'
)
class Meta:
model = Settings
exclude = ('id', 'createdAt', 'updatedAt',)
class SettingsDetailSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Settings
exclude = ('id','createdAt', 'updatedAt',)
urls.py
from django.conf.urls import url
from app import views
urlpatterns = [
url(r'^$', views.HomeView.as_view(), name=views.HomeView.name),
url(r'^settings/$', views.SettingsListView.as_view(), name=views.SettingsListView.name),
url(r'^settings/<uuid:settings_id>/$', views.SettingsDetailView.as_view(), name=views.SettingsDetailView.name),
]
просмотров.py
class SettingsListView(generics.ListCreateAPIView):
queryset = Settings.objects.all()
serializer_class = SettingsListSerializer
permission_classes = (IsAuthenticated,)
name = "Settings List"
class SettingsDetailView(generics.RetrieveUpdateDestroyAPIView):
serializer_class = SettingsDetailSerializer
permission_classes = (IsAuthenticated,)
name = "Settings Detail"
def get_queryset(self):
id = self.kwargs.get(self.lookup_url_kwarg)
setting = Settings.objects.filter(id=id)
return setting