Django Rest Framework路由器寄存器不工作

2024-10-02 04:32:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用django rest框架来生成一个api。其中我有两个模型,关联视图和序列化程序。它们是beers和{}。beersapi端点按预期工作,但是每当我试图访问pours端点时,都会出现以下错误:

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

我不太清楚我做错了什么,有人能指出错误吗?在

模型.py

from __future__ import unicode_literals

from django.db import models
from django.utils import timezone


class Beers(models.Model):
    """
    Beers
    """
    # The unique id
    id = models.AutoField(primary_key=True)
    # Timestamps
    created_at = models.DateTimeField(default=None, null=True)
    updated_at = models.DateTimeField(default=None, null=True)
    tap = models.PositiveIntegerField(default=None, null=True)
    url = models.CharField(max_length=255, default=None, null=True)
    abv = models.DecimalField(default=None, null=True, decimal_places=2, max_digits=3)
    style = models.CharField(max_length=255, default=None, null=True)
    score = models.PositiveIntegerField(default=None, null=True)
    tap_date = models.PositiveIntegerField(default=None, null=True)
    size = models.PositiveIntegerField(default=None, null=True)

    def save(self, *args, **kwargs):
        """
        On save, update timestamps
        """
        # If the record does not currently exist in the database
        self.created_at = timezone.now()
        self.updated_at = timezone.now()

        return super(Beers, self).save(*args, **kwargs)

    class Meta:
        db_table = 'beers'
        index_together = [("tap", "tap_date")]


class Pours(models.Model):
    """
    Handles pours
    """
    id = models.AutoField(primary_key=True)
    tap = models.PositiveIntegerField()
    amount = models.DecimalField(decimal_places=3, max_digits=19)
    date = models.PositiveIntegerField()

    def save(self, *args, **kwargs):
        """
        On save, update timestamps
        """
        return super(Pours, self).save(*args, **kwargs)

    class Meta:
        db_table = 'pours'
        index_together = [("tap", "date")]

视图.py

^{pr2}$

序列化程序.py

from rest_framework import serializers
from .models import *


class BeersSerialzier(serializers.HyperlinkedModelSerializer):
    queryset = Beers.objects.all()

    class Meta:
        model = Beers


class PoursSerialzier(serializers.HyperlinkedModelSerializer):
    queryset = Pours.objects.all()

    class Meta:
        model = Pours

网址.py

from django.conf.urls import include, patterns, url
from rest_framework import routers

import views

router = routers.DefaultRouter()
router.register(r'beers', views.BeersView)
router.register(r'pours', views.PoursView)

urlpatterns = [
    url('^', include(router.urls)),
]

Tags: djangofromimportselfnonetruedefaultmodels

热门问题