Как объединить запросы в django - PullRequest
0 голосов
/ 27 апреля 2020

Я создаю веб-сайт, где пользователь будет загружать видео, теперь я хочу запросить исполнителя и его видео, у меня уже есть поле «один ко многим», но я не знаю, как это сделать в views.py

это мои модели

from django.db import models
from embed_video.fields import EmbedVideoField

# Create your models here.


class Video(models.Model):
    video_author = models.CharField(default='Bongo Media', max_length=20)
    video_title = models.CharField(max_length=100)
    video_file = models.FileField(blank=True)
    video_image = models.ImageField(default='image.png')
    video_embed_link = EmbedVideoField(blank=True)
    video_descriptions = models.TextField(max_length=100, blank=True)
    video_pubdate = models.DateTimeField(auto_now=True)
    is_recommended = models.BooleanField(default=False)

    def __str__(self):
        return self.video_title


class Artist(models.Model):
    artist_picture = models.ImageField(upload_to='media')
    artist_name = models.CharField(max_length=100)
    artist_songs = models.ForeignKey(Video, on_delete=models.CASCADE)

    def __str__(self):
        return self.artist_name

и это мои views.py

from django.shortcuts import render, get_object_or_404
from .models import Video, Artist


# Create your views here.


def home(request):
    artist = Artist.objects.all()
    videos = Video.objects.all().order_by('-video_pubdate')
    context = {
        'videos': videos,
        'artist': artist
    }
    return render(request, 'index.html', context)


def detail(request, pk):
    video_detail = get_object_or_404(Video, pk=pk)
    context = {
        'video_detail': video_detail

    }
    return render(request, 'detail.html', context)

1 Ответ

0 голосов
/ 27 апреля 2020

Добавьте related_name в поле

artist_songs  = models.ForeignKey(Video, on_delete=models.CASCADE, related_name='artists')

, и вы можете запросить как

Video.objects.filter(artists__id=artist.id)

, но это не имеет смысла, если исполнитель fk к видео, вы должны изменить на many_to_many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...