任何人都可以告诉我如何仅使用模型中的外键才能获得适当的输出

发布于 2025-01-24 02:51:19 字数 3402 浏览 4 评论 0原文

这是我的型号。文件
models.py

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

class Movielist(models.Model) :
    Title = models.CharField(max_length=1000)
    Description = models.TextField(blank=True)
    ReleaseDate = models.DateTimeField(verbose_name='Release Date', blank=True)
    Upvote = models.IntegerField(default=0)
    Downvote = models.IntegerField(default=0)
    
    def __str__(self):
        return self.Title

class Actorlist(models.Model):
    Name = models.CharField(max_length=1000)
    DateofBirth = models.DateTimeField(verbose_name='Date of Birth',blank=True)

    def __str__(self):
        return self.Name

class ActorInMovie(models.Model):
    Movie = models.ForeignKey(Movielist, default=1, on_delete=models.CASCADE, blank=True, related_name='ActorInMovie')
    Actor = models.ForeignKey(Actorlist, default=1, on_delete=models.CASCADE, blank=True,related_name='ActorsMovie')
    
    def __str__(self):
        return self.Movie.Title

这是我的views.py文件
views.py

@api_view(['GET'])
def apiOverview(request):
    api_urls = {
        'List':'/task-list/',
        'Detail View':'/task-detail/<str:pk>/',
        'Create':'/task-create/',
        'Update':'/task-update/<str:pk>/',
        'Delete':'/task-delete/<str:pk>/',
    }
    return Response(api_urls)

@api_view(['GET'])
def MovieName(request):
    MovieName = Movielist.objects.prefetch_related('ActorInMovie')
    serializer = MovieListSerializer(MovieName, many=True)
    return Response(serializer.data)

这是我的serializer.py文件 serializers.py

from rest_framework import serializers
from .models import *

class MovieListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Movielist
        fields = "__all__"

作为输出,我会得到下面的情况,

[
    {
        "id": 1,
        "Title": "KGF Chapter 1",
        "Description": "This is very thrilling and suspenseful movie",
        "ReleaseDate": "2022-04-18T16:22:03Z",
        "Upvote": 5,
        "Downvote": 2
    },
    {
        "id": 2,
        "Title": "RRR",
        "Description": "This is a south Indian movie",
        "ReleaseDate": "2022-04-19T06:46:54Z",
        "Upvote": 2,
        "Downvote": 3
    },
    {
        "id": 3,
        "Title": "Doctor Strange",
        "Description": "this movie is a part of marvel cinematic universe.",
        "ReleaseDate": "2022-04-22T07:19:07Z",
        "Upvote": 12,
        "Downvote": 7
    }
]

任何人都可以告诉我如何获得这样的输出,

[
    {
        "id": 1,
        "Title": "KGF Chapter 1",
        "Description": "This is very thrilling and suspenseful movie",
        "ReleaseDate": "2022-04-18T16:22:03Z",
        "Actor": {yxz, yzx, xyz}
        "Upvote": 5,
        "Downvote": 2
    },
    {
        "id": 2,
        "Title": "RRR",
        "Description": "This is a south Indian movie",
        "ReleaseDate": "2022-04-19T06:46:54Z",
        "Actor": {yxz, yzx, xyz}
        "Upvote": 2,
        "Downvote": 3
    },
    {
        "id": 3,
        "Title": "Doctor Strange",
        "Description": "this movie is a part of marvel cinematic universe.",
        "ReleaseDate": "2022-04-22T07:19:07Z",
        "Actor": {yxz, yzx, xyz}
        "Upvote": 12,
        "Downvote": 7
    }
]

请帮助我解决此错误。我必须进一步链接此角度,因此请帮助我找到适当的输出

this is my models.py file
models.py

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

class Movielist(models.Model) :
    Title = models.CharField(max_length=1000)
    Description = models.TextField(blank=True)
    ReleaseDate = models.DateTimeField(verbose_name='Release Date', blank=True)
    Upvote = models.IntegerField(default=0)
    Downvote = models.IntegerField(default=0)
    
    def __str__(self):
        return self.Title

class Actorlist(models.Model):
    Name = models.CharField(max_length=1000)
    DateofBirth = models.DateTimeField(verbose_name='Date of Birth',blank=True)

    def __str__(self):
        return self.Name

class ActorInMovie(models.Model):
    Movie = models.ForeignKey(Movielist, default=1, on_delete=models.CASCADE, blank=True, related_name='ActorInMovie')
    Actor = models.ForeignKey(Actorlist, default=1, on_delete=models.CASCADE, blank=True,related_name='ActorsMovie')
    
    def __str__(self):
        return self.Movie.Title

this is my views.py file
views.py

@api_view(['GET'])
def apiOverview(request):
    api_urls = {
        'List':'/task-list/',
        'Detail View':'/task-detail/<str:pk>/',
        'Create':'/task-create/',
        'Update':'/task-update/<str:pk>/',
        'Delete':'/task-delete/<str:pk>/',
    }
    return Response(api_urls)

@api_view(['GET'])
def MovieName(request):
    MovieName = Movielist.objects.prefetch_related('ActorInMovie')
    serializer = MovieListSerializer(MovieName, many=True)
    return Response(serializer.data)

this is my serializers.py file
serializers.py

from rest_framework import serializers
from .models import *

class MovieListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Movielist
        fields = "__all__"

As output i am getting this as below

[
    {
        "id": 1,
        "Title": "KGF Chapter 1",
        "Description": "This is very thrilling and suspenseful movie",
        "ReleaseDate": "2022-04-18T16:22:03Z",
        "Upvote": 5,
        "Downvote": 2
    },
    {
        "id": 2,
        "Title": "RRR",
        "Description": "This is a south Indian movie",
        "ReleaseDate": "2022-04-19T06:46:54Z",
        "Upvote": 2,
        "Downvote": 3
    },
    {
        "id": 3,
        "Title": "Doctor Strange",
        "Description": "this movie is a part of marvel cinematic universe.",
        "ReleaseDate": "2022-04-22T07:19:07Z",
        "Upvote": 12,
        "Downvote": 7
    }
]

can anyone tell me how do i get a output like this

[
    {
        "id": 1,
        "Title": "KGF Chapter 1",
        "Description": "This is very thrilling and suspenseful movie",
        "ReleaseDate": "2022-04-18T16:22:03Z",
        "Actor": {yxz, yzx, xyz}
        "Upvote": 5,
        "Downvote": 2
    },
    {
        "id": 2,
        "Title": "RRR",
        "Description": "This is a south Indian movie",
        "ReleaseDate": "2022-04-19T06:46:54Z",
        "Actor": {yxz, yzx, xyz}
        "Upvote": 2,
        "Downvote": 3
    },
    {
        "id": 3,
        "Title": "Doctor Strange",
        "Description": "this movie is a part of marvel cinematic universe.",
        "ReleaseDate": "2022-04-22T07:19:07Z",
        "Actor": {yxz, yzx, xyz}
        "Upvote": 12,
        "Downvote": 7
    }
]

please help me to resolve this error.. i have to further link this angular so please help me to me find an appropriate output

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉世弥音 2025-01-31 02:51:19

首先,我将使用电影和演员之间的多托马尼关系。
这看起来像这样:

models.py:

class Actorlist(models.Model):
    Name = models.CharField(max_length=1000)
    DateofBirth = models.DateTimeField(verbose_name='Date of Birth',blank=True)

    def __str__(self):
        return self.Name


class Movielist(models.Model) :
    Title = models.CharField(max_length=1000)
    Description = models.TextField(blank=True)
    ReleaseDate = models.DateTimeField(verbose_name='Release Date', blank=True)
    Upvote = models.IntegerField(default=0)
    Downvote = models.IntegerField(default=0)
    Actors = models.ManyToManyField(Actorlist)
    
    def __str__(self):
        return self.Title


之后,您应该在输出中看到演员。
我还建议您从django-rest-framework阅读关系文档:

https: //www.django-rest-framework.org/api-guide/relations/

First I would use a ManyToMany relationship between the movies and the actors.
This would look something like this:

models.py:

class Actorlist(models.Model):
    Name = models.CharField(max_length=1000)
    DateofBirth = models.DateTimeField(verbose_name='Date of Birth',blank=True)

    def __str__(self):
        return self.Name


class Movielist(models.Model) :
    Title = models.CharField(max_length=1000)
    Description = models.TextField(blank=True)
    ReleaseDate = models.DateTimeField(verbose_name='Release Date', blank=True)
    Upvote = models.IntegerField(default=0)
    Downvote = models.IntegerField(default=0)
    Actors = models.ManyToManyField(Actorlist)
    
    def __str__(self):
        return self.Title


After that you should see the actors in your output.
I would also recommend reading the relationship documentation from django-rest-framework:

https://www.django-rest-framework.org/api-guide/relations/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文