我正在保存一個窗體,該窗體具有爲其中一個字段生成的隨機值。我也有一個manyToMany關係可以爲null。我想要完成的是在生成時保存表單,並在稍後檢索它來更新它。帶有ManyToManyField的窗體blank = True和null = True不保存沒有form.is_valid()
當我用管理控制檯保存表單時,它確實允許我保存而不添加任何內容,因爲模型的所有字段都有null = True和blank = True。
views.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)
我試圖與當我創建一個新的表單實例的其他代碼form.is_valid,但它不進入if條件本身(儘管在未提及碼)。
使用當前的代碼,它返回錯誤。 「EventForm對象沒有任何屬性cleared_data」但保存到數據庫中。當我發佈(request.POST)時沒有任何形式的保存完美,我無法理解爲什麼會出現這種情況?
UPDATE: forms.py
class EventForm(forms.ModelForm):
class Meta:
model = EiEventType
models.py
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,但它沒有進入「if」循環。這可能是什麼原因? – Akshay
你看過它沒有通過is_valid檢查嗎?檢查完成後'form.errors'中有什麼? – jproffitt
@jpproffitt它的確說有些字段是必需的。但我已經使用默認值初始化這些字段..那麼爲什麼它仍然返回False? – Akshay