【问题标题】:Django: Could not resolve URL for hyperlinked relationship using view nameDjango:无法使用视图名称解析超链接关系的 URL
【发布时间】:2021-07-10 13:43:37
【问题描述】:

在颜色中添加一个条目,但在温度曲线中添加一个:

无法使用视图名称“light_analysis:temperature-detail”解析超链接关系的 URL。您可能没有在 API 中包含相关模型,或者错误地配置了 lookup_field

我尝试了几个使用命名空间之类的选项。我只定义了温度模型。没有别的了。

urls.py(项目)

...
router = routers.DefaultRouter()

urlpatterns = [
    ...
    path('', include('light_analysis.urls')),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

urls.py(应用程序)

from django.urls import include, path
from . import views
from something_web.urls import router

router.register(r'light', views.LightViewSet)
urlpatterns = [
    path('', include(router.urls)),
]

models.py

...
class Light(models.Model):
    color_id              = models.ForeignKey(Color, on_delete=models.CASCADE)
    temperature           = models.CharField(max_length=63)
    temperature_id        = models.ForeignKey(Temperature, on_delete=models.CASCADE)

views.py

from rest_framework import viewsets
from common.models import Light
from .serializers import LightSerializer

class LightViewSet(viewsets.ModelViewSet):
    queryset = Light.objects.all()
    serializer_class = LightSerializer

序列化器.py

from rest_framework import serializers
from common.models import Light

class LightSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Light
        fields = '__all__'

【问题讨论】:

    标签: django django-rest-framework python-3.6


    【解决方案1】:

    我在序列化器中遗漏了这个:

    temperature_id = serializers.PrimaryKeyRelatedField(queryset=Temperature.objects.all(), many=False)
    

    然后直接在meta中调用字段:

    fields = ('temperature_id',)
    

    【讨论】:

      猜你喜欢
      • 2019-09-15
      • 2018-06-29
      • 2015-01-15
      • 2021-01-25
      • 2018-11-22
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多