У меня есть модель под названием barcard и форма для выбора одной из barcards в базе данных. Моя цель - получить экземпляр выбранной карты. У меня есть следующий код:
models.py
class Barcard(models.Model):
name = models.CharField(max_length=30)
drinks = models.ManyToManyField(Drink)
barcardFile = models.FileField(blank=True, upload_to='barcard')
mixingFile = models.FileField(blank=True, upload_to='mixing')
def __str__(self):
return self.name
forms.py
class BarcardGenForm(forms.Form):
barcard = forms.ModelChoiceField(Barcard.objects.all())
views.py
class BarcardSelect(FormView):
template_name = 'drinks/home.html'
form_class = BarcardGenForm
success_url = 'download/'
def form_valid(self, form):
return super().form_valid(form)
def barcardGen(request):
if request.method =='POST':
card = request.POST.get('barcard')
barcardName = card.name
card.generateFiles()
return HttpResponseRedirect('drinks/download/?b='+barcadName)
return render(request, 'drinks/download.html')
Когда я использую get () для QueryDict, с ключом 'barcard' он возвращает строку с номером. Кажется, что число соответствует индексу, который выбранная штриховая карта имеет в ModelChoiceField. Я надеялся, что переменная карты будет содержать экземпляр barobject или имя, чтобы я мог сделать запрос.