Дано две модели , форма и вью. Задача следующая, пользователь пишет в форму ид(артикл), из даталиста показывает сходство, выбирает ид пишет количество и отправляет. Вопрос в следующем форма не проходит до сохранения из за ее проверки , ибо в value строковый тип , а уже внутри проверки если форма валидна то
new_form.good = form['good'].value()
. Так вот как пропустить данные при проверке чтобы можно было сохранить данные. Спасибо.
class Sale(models.Model):
good = models.ForeignKey(Good)
seller = models.ForeignKey(User)
time_selling = models.DateField(auto_now_add=True, editable=False)
class Good(models.Model):
article = models.CharField('Артикул товару', max_length=100)
name = models.CharField('Назва товару', max_length=100)
count = models.PositiveSmallIntegerField(default=1)
Фомрс.пи
from django import forms
from core.models import Sale
from djangoformsetjs.utils import formset_media_js
class SaleForm(forms.ModelForm):
good = forms.CharField(widget=forms.TextInput(attrs={'list': 'goods'}))
class Meta:
model = Sale
fields = ('good', 'count')
js = formset_media_js + ()
и вью
@login_required
def index(request):
"TODO"
"Check for count can`t be lower than 0"
shop = Shop.objects.get(owner=request.user.parent)
goods = Good.objects.filter(shop=shop, count__gt=0)
saleformset = formset_factory(SaleForm)
if request.method == 'POST':
formset = saleformset(request.POST)
for form in formset.forms:
if form.is_valid():
new_form = form.save(commit=False)
new_form.seller = request.user
new_form.good = form['good'].value()
new_form.save()
good_object = Good.objects.get(pk=new_form.good.pk)
own_count = good_object.count - new_form.count
good_object = Good.objects.filter(pk=new_form.good.pk).\
update(count=own_count)
return render(request, 'all_ok.html', {'data': 'lil'})
else:
formset = saleformset()
return render(request, 'base_vendor.html',
{'context': goods, 'formset': formset})