MultipleObjectsReturned- get () вернул более одного mPurchase - вернул 2 - PullRequest
0 голосов
/ 22 ноября 2018

Я новичок в Джанго.При попытке сохранить форму mPurchase я получаю ошибку MultipleObjectReturned.Я пытаюсь получить данные из формы, используя запрос POST.Каждый раз, когда я отправляю форму, я получаю сообщение об ошибке.

views.py

def milkPurchase(request):
title='Buy Milk'
milk = mPurchase.objects.all()

if request.method=='POST':
    form=mPurchaseForm(request.POST)
    if form.is_valid():
        m = get_object_or_404(mPurchase)
        m.mPurchase_date=timezone.now()
        m.save()
        return redirect('milk-purchase')

else:
    form=mPurchaseForm()


context = {
    'title': title,
    'form': form,
    'milk':milk

}
return render(request,'dairyapp/milk-purchase.html',context)

forms.py

class mPurchaseForm(forms.ModelForm):
"""
    This form is for milk purchase
"""

seller=forms.CharField(
   label='Seller Name',
    max_length=50,
)

mPurchase_product=forms.ChoiceField(
    choices=MILK_CHOICES,
    label='Milk Type',
    initial='',
    widget=forms.Select(),
    required=True
)

mPurchase_qty=forms.FloatField(
    label='Qty'
)

mPurchase_rate=forms.FloatField(
    label='Rate'
)

class Meta:
    model=mPurchase
    fields=('seller','mPurchase_product','mPurchase_qty','mPurchase_rate',)

вот мой models.py

class mPurchase(models.Model):
mPurchase_id=models.AutoField(primary_key=True)
seller=models.CharField(max_length=50)
mPurchase_date=models.DateTimeField(default=timezone.now)
mPurchase_product=models.CharField(max_length=10,choices=MILK_CHOICES)
mPurchase_qty=models.FloatField()
mPurchase_rate=models.FloatField()

def __str__(self):
    return self.seller

Не могли бы вы помочь мне пройти через это?Я пытался использовать

mPurchase.objects.filter()

Кроме того, пытался поймать исключение, используя ObjectDoesNotExist и MultipleObjectReturned

from django.core.exceptions import ObjectDoesNotExist, 
MultipleObjectsReturned

1 Ответ

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

Вам необходимо изменить здесь:

if request.method=='POST':
    form=mPurchaseForm(request.POST)
    if form.is_valid():
        m = form.save(commit=False)  # <--- Here
        m.mPurchase_date=timezone.now()
        m.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...