У меня есть модель Конкурсанта, которая имеет отношение один к одному с категорией.Я хочу, чтобы создатель премии имел доступ только к последним 15 категориям премии, которую он создал в образцовой модели участника.То есть, набор запросов с несколькими выборами в поле (категория) Конкурсанта покажет только список из последних 15 категорий, созданных в модели категорий.Я предпринял разные попытки, но код либо не работает, либо выдает сообщение [['ManagementForm data отсутствует или повреждено с ошибкой'] '.
Я произвел бесчисленное множество повторных разложений кодов и попытался найти решения, найденные в Интернете.Но они не работали.
# MY CATEGORY MODEL
class Category(models.Model):
award = models.ForeignKey(Award, on_delete=models.CASCADE)
award_category = models.CharField(max_length=150, blank=True, null=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
def __str__(self):
return self.award_category
# MY CONTESTANT MODEL
class Contestant(models.Model):
award_name = models.ForeignKey(Award, on_delete=models.CASCADE)
contestant_name = models.CharField(max_length=150, null=True, blank=True )
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='contestants')
vote = models.IntegerField()
def number_of_vote(self):
return Contestant.objects.filter(self.vote).count()
vote_count = property(number_of_vote)
#MY VIEW
def get_award(request, pk):
new_award = get_object_or_404(Award, pk=pk)
Contest_Formset = modelformset_factory(Contestant, fields('contestant_name', 'category',), extra=15)
formset = Contest_Formset(request.POST)
for form in formset:
form.fields['category'].queryset = Category.objects.filter(user=request.user)[1:15]
if request.method == 'POST' and form.is_valid():
myform = form.save(commit=False)
myform.award_name = new_award
myform.save()
return redirect('award_details', pk=new_award.pk)
else:
formset = Contest_Formset()
context = {
'new_award': new_award,
'formset': formset
}
return render(request, 'voting/get_award.html', context)
# TEMPLATE
<form action=" " method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ formset.management_form }}
{{ formset }}
<input type="submit" value="save">
</form>
Я ожидаю, что вывод поля категории участника покажет только последние 15 категорий, созданных пользователем для входа в систему.