Django从QueryDict获取对象

时间:2018-11-04 07:53:30

标签: django post request

我有一个称为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或名称的实例,以便我可以进行查询。

1 个答案:

答案 0 :(得分:0)

要使用帖子中的条形码卡获取卡对象,应使用card变量进行查询。 card_obj = Barcard.objects.get(id=card),而不是使用card代替card_obj。例如barcardName = card_obj.name