Python Django Rest框架:如何访问URL中的单个API元素?

Python Django Rest框架:如何访问URL中的单个API元素?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我想通过如下URL访问每个API元素“/API/v1/element\u id” 我已经在序列化程序中明确定义了pk 序列化程序.py class TweetSerializer(serializers.ModelSerializer): tweet_id = serializers.IntegerField() class Meta: fields = ('tweet_id', 'author', 'text', 'created_at', 'retweet_

我想通过如下URL访问每个API元素“/API/v1/element\u id”

我已经在序列化程序中明确定义了pk

序列化程序.py

class TweetSerializer(serializers.ModelSerializer):
    tweet_id = serializers.IntegerField()

    class Meta:
        fields = ('tweet_id', 'author', 'text', 'created_at', 'retweet_count', 'favourite_count',)
        model = Tweet

但它不起作用。我找不到错误

models.py

class Tweet(models.Model):
    #tweet_id = models.ForeignKey(User, on_delete=models.CASCADE)
    tweet_id = models.IntegerField()
    created_at = models.CharField(max_length=100)
    text = models.TextField()
    author = models.CharField(max_length=100)
    retweet_count = models.IntegerField()
    favourite_count = models.IntegerField()

    def __str__(self):
        return str(self.tweet_id)

views.py


class TweetList(generics.ListCreateAPIView):
    queryset = Tweet.objects.all()
    serializer_class = TweetSerializer


class TweetDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Tweet.objects.all()
    serializer_class = TweetSerializer

url.py

urlpatterns = [
    path('<int:pk>/', TweetDetail.as_view()),
    path('', TweetList.as_view()),
]

urlpatterns=[
路径(“/”,TweetDetail.as_view()),
路径(“”,TweetList.as_view()),
]
列出所有tweet可以正常工作,/api/v1/,但不会返回单个tweet


我曾尝试在模型中设置ForeignKey,但随后出现一个错误列tweet_id_id not found。

如果要检索特定对象,通常需要在
视图中添加
查找字段

因此在这个场景中,您的
lookup\u字段是
tweet\u id

你的观点变成

class TweetDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Tweet.objects.all()
    serializer_class = TweetSerializer
    lookup_field = 'tweet_id'
然后在
url
中引用相同的
lookup\u字段。所以你的
url
就变成了

path('<tweet_id>', TweetDetail.as_view()),
路径(“”,TweetDetail.as_view()),
你应该通过
/API/v1/1234/
访问详细的API,其中
1234
是你的
Tweet
实例的主键。是的,我知道,不管你得到了什么,它都不起作用。顺便说一句,正如我在我的问题中所说的,列表工作正常,所有的Tweet也是通过/API/v1/发送的,但是访问单个元素/API/v1/1234返回的都没有找到