Как получить несколько картинок к посту из базы данных?
У меня есть раздел объявлений на сайте. К одному объявлению (посту) относится по три фотографии. Фото и посты находятся в разных моделях базы данных, но у них одинаковые post_id. При отображении всех постов не могу получить фотографии к ним, пытаюсь это сделать по их post_id, но получаю такую ошибку "The QuerySet value for an exact lookup must be limited to one result using slicing". То-есть мне нужно синхронизировать выдачу постов и фотографии к ним, которые находятся в разных моделях б/д. Помогите пожалуйста, четвёртый день голову ломаю. Вот мой код:
models.py
`class Asnt(models.Model):
title = models.CharField(max_length=100, verbose_name= 'Заголовок')
text = models.TextField(verbose_name= 'Описание')
region = models.CharField(max_length=100, verbose_name= 'Регион', default='')
contacts = models.TextField(verbose_name= 'Контакты', default='')
price = models.TextField(verbose_name= 'Цена', default='')
pub_date = models.DateTimeField(auto_now_add=True, verbose_name= 'Дата публикации')
cat = models.ForeignKey(
Cat, on_delete=models.SET_NULL,
related_name='content',
blank=True,
null=True,
verbose_name= 'Раздел'
)
person = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='person',
verbose_name= 'Автор'
)
class Meta:
ordering = ['-pub_date']
verbose_name = 'Пост'
verbose_name_plural = 'Объявления'
def __str__(self):
return self.text[:15]`
`class Photo(models.Model):
post = models.ForeignKey(Asnt, default=None, on_delete=models.CASCADE)
photos = models.ImageField(
'Фото',
upload_to='posts/',
blank=True
)
def __str__(self):
return self.post.title`
views.py
`def public(request):
publick_posts = Asnt.objects.select_related()
photos = Photo.objects.filter(post_id=publick_posts)
paginator = Paginator(publick_posts, 15)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
context= {
'page_obj': page_obj,
'image': photos,
}
return render(request, 'content/post_copy1.html', context)`
form.py
`class CatForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['cat'].empty_label = "Раздел не выбран"
class Meta:
model = Asnt
fields = ('title', 'text', 'price', 'region', 'contacts','cat')
widgets = {
'title': forms.TextInput(attrs={'class': 'form-control', 'placeholder': "Введите название"}),
'price': forms.TextInput(attrs={'class': 'form-control', 'placeholder': "Цена в рублях"}),
'region': forms.TextInput(attrs={'class': 'form-control', 'placeholder': "Укажите регион"}),
'contacts': forms.TextInput(attrs={'class': 'form-control', 'placeholder': "Ваши контакты для связи"}),
'text': forms.Textarea(attrs={'class': 'form-control', 'rows':4, 'placeholder': "Введите описание"}),
'cat': forms.Select(attrs={'class': 'form-control'}),
'multiple': 'multiple'}),
}
def clean_text(self):
data = self.cleaned_data['text']
if data == '':
raise forms.ValidationError('Поле не может быть пустым')
return data`
`class PhotoForm(forms.ModelForm):
class Meta:
model = Photo
fields = ('photos',)
widgets = {
'photos': forms.FileInput(attrs={'multiple': True}),
}`
`@register.filter
def addclass(field, css):
return field.as_p(attrs={'class': css})`