我有一个称为barcard的模型,以及一个用于选择数据库中的barcard之一的表格。我的目标是获取所选条形码的实例。我有以下代码:
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')
当我在QueryDict上使用get()时,使用键“ barcard”返回一个带有数字的字符串。似乎数字对应于所选Barcard在ModelChoiceField中具有的索引。我曾希望card变量包含barobject或名称的实例,以便我可以进行查询。
答案 0 :(得分:0)
要使用帖子中的条形码卡获取卡对象,应使用card
变量进行查询。 card_obj = Barcard.objects.get(id=card)
,而不是使用card
代替card_obj
。例如barcardName = card_obj.name
。