Django Поля DateTimeField и User Input не добавлены - PullRequest
0 голосов
/ 25 марта 2020

Я новичок в python Django. Я работаю над практическим проектом. Я застрял при добавлении продукта. Он добавляет все поля, кроме двух полей i. DateTimeField ii. Пользователь (который добавляет продукт)

Ошибка, с которой я сталкиваюсь:

django.db.utils.IntegrityError: null value in column "pub_date" violates not-null constraint
DETAIL:  Failing row contains (3, Piano, Ball Pens(set of 3), 15, 30, 10, images/ballpens_QdhwoOa.jpg, null, null).

models.py

class Product(models.Model):
    companyName    = models.CharField(max_length=255)
    pro_name       = models.CharField(max_length=255)
    Purchase_Price = models.IntegerField()
    Sale_Price     = models.IntegerField()
    Quantity       = models.IntegerField()
    Picture        = models.ImageField(upload_to='images/')
    saler          = models.ForeignKey(User, on_delete=models.CASCADE)
    pub_date       = models.DateTimeField()

    def pub_date_pretty(self):
        return self.pub_date.strftime('%b %e %Y')

    def __str__(self):
        return self.pro_name

views.py

class AddProduct(TemplateView):
    template_name = 'stock/addproduct.html'

    def get(self, request):
        form = AddProductForm()
        args = {'form':form}
        return render(request, self.template_name, args)

    def post(self, request):
        form = AddProductForm(request.POST, request.FILES)
        if form.is_valid():
            productadded = form.save()
            productadded.saler =  request.user
            productadded.pub_date = timezone.datetime.now()
            productadded.save()
            return redirect('stock')
        else:
            args = {'form': form}
            return render(request, self.template_name, args)

В views.py я сохраняю пользователя, дату и время, как показано выше forms.py


class AddProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = ('companyName', 'pro_name', 'Purchase_Price', 'Sale_Price', 'Quantity', 'Picture' )

    def __init__(self, *args, **kwargs):
        super(AddProductForm, self).__init__(*args, **kwargs)
        self.fields['companyName'].label    = 'Company Name'
        self.fields['pro_name'].label       = 'Product Name'
        self.fields['Purchase_Price'].label = 'Purchase Price'
        self.fields['Sale_Price'].label     = 'Sale Price'

Ваша помощь будет оценена. Спасибо

1 Ответ

2 голосов
/ 25 марта 2020

сделать небольшую коррекцию

       if form.is_valid():
            productadded = form.save(commit=False)
            productadded.saler =  request.user
            productadded.pub_date = timezone.datetime.now()
            productadded.save()
            return redirect('stock')
...