Получить объекты, назначенные на ForeignKey
честно говоря, я не совсем уверен, как это объяснить, но я хочу отобразить все объекты, назначенные иностранному ключу, когда я нахожусь в одном из этих объектов
MODELS.PY
class Category(models.Model):
def __str__(self):
return self.name
...
name = models.CharField(max_length=267)
CategoryThumbnail = models.CharField(max_length=300)
class Video(models.Model):
def __str__(self):
return self.name
...
Category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True)
nazwa = models.CharField(max_length=267)
embedlink = models.CharField(blank=True, max_length=1000)
thumbnail = models.CharField(max_length=300, blank=True)
VIEWS.PY
def Category(request, slug):
category_user = Category.objects.get(slug=slug)
category_video = Video.objects.filter(Category = category_user)
categories = Category.objects.all()
dict = {'category_user' : category_user, 'category_video' : category_video, 'categories' : categories}
return render(request, 'categories.html', dict)
def video(request, id):
video_user = Video.objects.get(pk=id)
videos = Video.objects.all()
categories = Category.objects.all()
dict = {'video_user' : video_user, 'categories' : categories, 'videos': videos}
return render(request, 'video.html', dict)
TEMPLATE categories.html
{% for video in category_video %} {% if category_video %}
<div class="flex-container">
<div class="between">
<a href="/video/{{ video.id }}"><img loading="lazy" id="resize" src="{{ video.thumbnail }}.png" class="miniimg"></a>
<figcaption class="caption"><a style="color: #ffffff; font-size: 17px; font-weight: bold;" href="/video/{{ video.id }}"> {{ video.name }} </a></figcaption>
</div>
</div>
{% endif %} {% endfor %}
На данный момент все работает, но когда я хочу отобразить объекты из видео в категории но когда я пытаюсь отобразить объекты видео, которые назначены категории в шаблоне видео, это не работает, что бы я ни делал. Я пытаюсь сделать это около полугода и никаких результатов, мой video.html менялся много раз, чтобы сделать это, поэтому я не буду приводить код отсюда. Я приложу фото, чтобы лучше понять (прямоугольники - это те же видео). Короче говоря, я хочу отображать те же элементы, назначенные иностранному ключу в категории, и когда я открываю элемент. ОПИСАНИЕ ИЗОБРАЖЕНИЯ. 1.На HTML категории 2.На HTML видео
Я настоятельно советую вам вернуться к документу, чтобы прочитать о ForeignKey: https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_one/
в любом случае, вы можете следовать этому:
#views.py
def Category(request, slug):
category_user = Category.objects.get(slug=slug)
category_video = Video.objects.filter(category=category_user)
categories = Category.objects.all()
dict = {'category_user' : category_user, 'category_video' : category_video, 'categories' : categories}
return render(request, 'categories.html', dict)
Я просто изменил заглавную букву "c" в фильтре видеомодели
#html
{% for video in category_video %}
{% for cats in video.category_set.all %}
{{ cats.<fieldname> }}
{% endfor %}
{% endfor %}