Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ManyToManyField blank=True和null=True的表单在没有表单的情况下无法保存。是否有效()_Django_Django Forms_Django Views_Django Orm_Django Models - Fatal编程技术网

Django ManyToManyField blank=True和null=True的表单在没有表单的情况下无法保存。是否有效()

Django ManyToManyField blank=True和null=True的表单在没有表单的情况下无法保存。是否有效(),django,django-forms,django-views,django-orm,django-models,Django,Django Forms,Django Views,Django Orm,Django Models,我正在保存一个表单,该表单为其中一个字段生成了一个随机值。我还有一个可以为空的多个关系。我想要完成的是,在生成表单时保存表单,然后检索表单以更新表单 当我使用管理控制台保存表单时,它确实允许我保存表单而不向其添加任何内容,因为对于模型的所有字段,都有null=True和blank=True 视图.py def event(request): if request.POST: form = EventForm(request.POST) if form.is

我正在保存一个表单,该表单为其中一个字段生成了一个随机值。我还有一个可以为空的多个关系。我想要完成的是,在生成表单时保存表单,然后检索表单以更新表单

当我使用管理控制台保存表单时,它确实允许我保存表单而不向其添加任何内容,因为对于模型的所有字段,都有null=True和blank=True

视图.py

def event(request):
    if request.POST:
        form = EventForm(request.POST)
        if form.is_valid():
            form.save()
            del request.session['event_id']
            return HttpResponseRedirect('....')
    else:
        event_session = request.session.get('event_id')
        if event_session is not None:
            event_instance = EiEventType.objects.get(eventID = event_session)
            form = EiEventForm(instance=event_instance)
            form.save(force_update=True)
        else:
            form = EventForm()
            form.save()
            request.session['event_id'] = form['eventID'].value()
    args = {}
    args.update(csrf(request))
    args['form'] = form
    return render_to_response('.....',args)
class Event(models.Model):
    eventID = models.CharField(null=True,blank=True,default=random_eventID)
    start = models.DateTimeField(null=True, default=two_min_from_now)
    signal = models.ManyToManyField(Signal,null=True)
    ...
    ...
    ...
当我创建一个新的表单实例时,我尝试使用form.is_在else代码中有效,但是它本身没有输入if条件(尽管代码中没有提到)

使用当前代码返回错误。“EventForm对象没有属性数据”,但会保存到数据库中..当我发布(request.post)时,表单中没有任何内容,它会完美地保存,我无法理解为什么会出现这种情况

更新: forms.py

class EventForm(forms.ModelForm):
    class Meta:
        model = EiEventType
型号.py

def event(request):
    if request.POST:
        form = EventForm(request.POST)
        if form.is_valid():
            form.save()
            del request.session['event_id']
            return HttpResponseRedirect('....')
    else:
        event_session = request.session.get('event_id')
        if event_session is not None:
            event_instance = EiEventType.objects.get(eventID = event_session)
            form = EiEventForm(instance=event_instance)
            form.save(force_update=True)
        else:
            form = EventForm()
            form.save()
            request.session['event_id'] = form['eventID'].value()
    args = {}
    args.update(csrf(request))
    args['form'] = form
    return render_to_response('.....',args)
class Event(models.Model):
    eventID = models.CharField(null=True,blank=True,default=random_eventID)
    start = models.DateTimeField(null=True, default=two_min_from_now)
    signal = models.ManyToManyField(Signal,null=True)
    ...
    ...
    ...
随机函数定义如下:

def random_eventID()
    return "event_" + str(uuid.uuid4())[:5]

def two_min_from_now()
    return datetime.datetime.now() + timedelta(minutes=2)

除非首先调用
form.is valid()
,否则无法调用
form.save()

    else:
        form = EventForm()
        form.save()
        request.session['event_id'] = form['eventID'].value()

因此,由于它是一个模型表单,它会查找清理后的数据,但它不存在

我知道这是不允许的。我在问题中确实提到了。我用form.is_尝试了它,但是它没有进入“if”循环。原因是什么?你有没有调查过哪些东西没有通过有效检查?检查后,
表单中有什么错误?@jpproffitt它确实说明某些字段是必需的。但是我已经用默认值初始化了这些字段。那么为什么它仍然返回False呢?好问题。你能发布你的表单类和模型让我看一下吗?你有没有尝试过在模型字段中添加
blank=True
?这将允许表单中出现空白值。阅读本文了解更多详细信息:如何在生成表单后立即保存表单?我可以传递哪些数据…我希望能够使用表单中已填写的内容存储表单…然后检索并更新它…我该如何继续?为什么要保存一个表单而不保存任何内容?要保存表单中输入的数据并在以后检索,需要一个模型和一个模型表单。这些都在文档中。哦,是的,我知道,我有一个模型,一个模型表单就是我正在使用的。表单中的一个字段有一个随机值,当我在表单中输入一些数据并转到另一个页面时,我希望当我再次返回到该页面时,所有数据都能保持不变。所以,当我点击链接时,我想保存表单中的任何内容。我希望这有帮助!有没有理由在模型中没有一个字段来存储这个随机值呢?返回页面时,您可以选择是否显示它。我不确定我是否看到了这里的问题…我将值存储在“eventID”字段中,但每次我返回页面时,值都会发生变化(这是我不希望发生的事情)…它更像是一个表单,您单击链接,当您返回时,我希望输入所有数据,因为它在表格中,所以我可以继续更新表格。