Django - ModelForm保存时创建具有空字段的对象?

2024-05-23 19:09:55 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个有6个属性的模型,然后是一个有3个属性的模型表单,用来填充这6个属性中的3个。这3个属性中的一个是imagefield,所以我认为我需要使用窗体保存()将图像保存到上载位置。但是,当我尝试使用窗体保存()它立即创建一个缺少字段的对象并失败。如何创建一个对象并用窗体保存()? 我也可能误解了窗体保存()不过。没有窗体保存()图像未上载到上载位置。在

我的代码如下。。。。在

在模型.py在

class Posting(models.Model):
    textbook = models.ForeignKey(Textbook)
    condition = models.CharField(max_length = 200)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    user = models.ForeignKey(User)
    image = models.ImageField(upload_to='postingpics/%Y/%m/%d', default="../../static/textchange/nophoto.jpg")
    post_date = models.DateTimeField('date_posted')

    def __str__(self):
        return str(self.textbook)

    def was_posted_recently(self):
        return self.post_date >= timezone.now() - datetime.timedelta(days=1)
    was_posted_recently.admin_order_field = 'post_date'
    was_posted_recently.boolean = True
    was_posted_recently.short_description = 'Posted recently'

在表单.py在

^{pr2}$

在视图.py在

@login_required
def addposting(request, uisbn):
    form = PostCreate(request.POST or None, request.FILES or None)

    # Get textbook with isbn equal to usibn
    ltextbook = Textbook.objects.filter(isbn = uisbn)
    text = ltextbook[0]
    curuser = request.user

    if form.is_valid() and request.POST:
        condition = request.POST.get('condition')
        price = request.POST.get('price')
        image = request.FILES.get('image')
        if image:
            if (not (Posting.objects.filter(Q(user = curuser) & Q(textbook = text)))):
                print("one")
                print("two")
                new = Posting(textbook = text, user = curuser, post_date = datetime.now(), condition=condition, price=price, image = image)
                print("three")
                form.save()
                print("bw")
                new.save()
                print("four")
                return HttpResponseRedirect('/results/' + uisbn)
        else:
            if (not (Posting.objects.filter(Q(user = curuser) & Q(textbook = text)))):
                new = form.save()
                new = Posting(textbook = text, user = curuser, post_date = datetime.now())
                new.save()
                return HttpResponseRedirect('/results/' + uisbn)

    return render_to_response(
        'textchange/addposting.html',
        locals(),
        context_instance=RequestContext(request)
        )

中的打印语句视图.py只是为了测试和试验。在

编辑:

错误如下:

IntegrityError在/results/9781439820643/posting/add “post_date”列中的空值违反了not null约束 详细信息:失败行包含(132,New,23.00,null,null,null,postingpics/2015/09/18/office_WnbptWi.png). 在


Tags: textimagedatereturnmodelsrequest窗体condition
1条回答
网友
1楼 · 发布于 2024-05-23 19:09:55

我认为您只是没有填写必填字段,所以要么您将全部填写,要么您可以将模型字段更改为

textbook = models.ForeignKey(Textbook,required=false)
condition = models.CharField(max_length = 200,required=false)
price = models.DecimalField(max_digits=5, decimal_places=2,required=false)
user = models.ForeignKey(User,required=false)
image = models.ImageField(upload_to='postingpics/%Y/%m/%d', default="../../static/textchange/nophoto.jpg",required=false)
post_date = models.DateTimeField('date_posted',required=false)

相关问题 更多 >