Как извлечь переменные главного класса из подкласса в django
У меня есть код фильтра для сайта:
def buy_files(request):
bdfiles = FeedFile.objects.all()
# bdfiles = UploadFile.objects.all()
form = FileFilterForm(request.GET)
if form.is_valid():
if form.cleaned_data["number_course"]:
bdfiles = bdfiles.filter(number_course = form.cleaned_data["number_course"])
if form.cleaned_data["number_semestr"]:
bdfiles = bdfiles.filter(number_semestr = form.cleaned_data["number_semestr"])
if form.cleaned_data["subjectt"]:
bdfiles = bdfiles.filter(subjectt = form.cleaned_data["subjectt"])
if form.cleaned_data["type_materials"]:
bdfiles = bdfiles.filter(type_materials = form.cleaned_data["type_materials"])
if form.cleaned_data["institute"]:
bdfiles = bdfiles.filter(institute = form.cleaned_data["institute"])
return render(request, 'chat/files/buyfile.html', {'bdfiles': bdfiles, 'form':form})
And models.py:
class UploadFile(models.Model):
user = models.ForeignKey(User,on_delete = models.CASCADE,related_name='file_created' ,verbose_name='Автор')
title = models.CharField(max_length=200, verbose_name='Заголовок')
# uploadedfile = models.FileField(upload_to='files/',null=True, verbose_name='Файл')
description = models.TextField(blank=True, verbose_name='Описание')
createdtime = models.DateField(auto_now_add=True, db_index=True, verbose_name='Дата создания')
price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name='Цена')
number_course = models.IntegerField(null=True, blank=True, verbose_name='Курс')
number_semestr = models.IntegerField(null=True, blank=True, verbose_name='Семестр')
subjectt = models.CharField(max_length=200, null=True,verbose_name='Предмет')
type_materials = models.CharField(max_length=200,null=True, verbose_name='Тип работы')
institute = models.CharField(max_length=200, null=True, verbose_name='Институт')
def __str__(self):
return self.title
class Meta:
verbose_name = 'Загрузка файла'
verbose_name_plural = 'Загрузка файлов'
class FeedFile(models.Model):
file = models.FileField(upload_to="files/")
feed = models.ForeignKey(UploadFile, on_delete=models.CASCADE)
Когда я начинаю вводить данные в фильтр на html странице, возникает ошибка, что нет полей number_semestr, number_course и так далее, а есть только поля feed, feed_id, file, id. HTML код страницы:
Как я могу извлечь переменные класса uploadFile из класса Feedfile?
Вам нужно обратиться к своему внешнему ключу:
def buy_files(request):
bdfiles = FeedFile.objects.all()
# bdfiles = UploadFile.objects.all()
form = FileFilterForm(request.GET)
if form.is_valid():
if form.cleaned_data["number_course"]:
bdfiles = bdfiles.filter(feed__number_course = form.cleaned_data["number_course"])
if form.cleaned_data["number_semestr"]:
bdfiles = bdfiles.filter(feed__number_semestr = form.cleaned_data["number_semestr"])
if form.cleaned_data["subjectt"]:
bdfiles = bdfiles.filter(feed__subjectt = form.cleaned_data["subjectt"])
if form.cleaned_data["type_materials"]:
bdfiles = bdfiles.filter(feed__type_materials = form.cleaned_data["type_materials"])
if form.cleaned_data["institute"]:
bdfiles = bdfiles.filter(feed__institute = form.cleaned_data["institute"])
return render(request, 'chat/files/buyfile.html', {'bdfiles': bdfiles, 'form':form})