Джанго получает объект из QueryDict - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть модель под названием 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 или имя, чтобы я мог сделать запрос.

1 Ответ

0 голосов
/ 04 ноября 2018

Чтобы получить объект карты с помощью barcard из поста, вы должны сделать запрос с вашей переменной card. card_obj = Barcard.objects.get(id=card) и вместо card используйте это card_obj. Например barcardName = card_obj.name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...