ForeignKey и fromset для формы?

Дано две модели , форма и вью. Задача следующая, пользователь пишет в форму ид(артикл), из даталиста показывает сходство, выбирает ид пишет количество и отправляет. Вопрос в следующем форма не проходит до сохранения из за ее проверки , ибо в 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})
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 1
@NaName
for form in formset.forms:
data_to_save_without_data_validation = request.POST.get(DATA_NAME, '')
if form.is_valid():
new_form = form.save(commit=False)

если DATA_NAME это например 'good' (key) то в data_to_save_without_data_validation будет значение (key).вроде както так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы