由于某些原因使用updateview时,我的用户值设置为null。我有一个create视图,其中用户自动设置为当前用户,当我查看数据库时,一切正常。问题是,当我使用updateview时,该值被重置为null。所有其他值均按预期工作。有谁知道如何防止将该值重置为null?
class model_testform(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="author", null=True, blank=True, on_delete=models.SET_NULL)
class view_testform(CreateView):
model = model_testform
form_class = form_testform
template_name = "testform.html"
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.author = self.request.user
form.save()
return super(view_testform, self).form_valid(form)
def get_success_url(self, *args, **kwargs):
form = form_testform
messages.add_message(self.request, messages.SUCCESS, 'New Block was submitted')
return reverse("testform:view_testform")
class view_testformUpdate(UpdateView):
model = model_testform
form_class = form_testform
template_name = "testformUpdate.html"
def get_success_url(self, *args, **kwargs):
form = form_testform
messages.add_message(self.request, messages.INFO, 'Block was Updated')
return reverse("testform:view_testform")
class form_testform(forms.ModelForm):
parkSpecialLane = forms.ChoiceField(label='Parking Lane or Other Special Lane',choices=[("", ""),("N", "N"),("PK", "PK"),("SP", "SP"),("CLP", "CLP"),("BL", "BL"),("OTH", "OTH")])
blockID = forms.CharField(label='Block ID', required = True)
consistantBlock = forms.BooleanField(label='Consistant Block', required = False)
rodwayType = forms.ChoiceField(required = False, label='Roadway Type',choices=[("", ""),("2U", "2U"),("3T", "3T"),("4U", "4U"),("4D", "4D"),("5T", "5T"),("6U", "6U"),("6D", "6D")])
medianType = forms.ChoiceField(required = False, label='Median Type',choices=[("", ""),("N", "N"),("R", "R"),("D", "D"),("F", "F")])
horAlignment = forms.ChoiceField(required = False, label='Horizontal Alignment',choices=[("", ""),("T", "T"),("GC", "GC"),("SC", "SC")])
speedLimit = forms.ChoiceField(required = False, label='Speed Limit', choices=[(x, x) for x in range(0, 70, 5)])
shoulderChoices = [("",""),("P",'P'),("T",'T'),("G",'G'),("C",'C'),("VC",'VC'),("MC",'MC'),("CG",'CG'),("MG",'MG'),("PC",'PC'),("N",'N')];
shoulderTypeDec = forms.ChoiceField(required = False, label='Shoulder Type',choices=shoulderChoices)
shoulderWidthDec = forms.IntegerField(required = False, label='Shoulder Width')
gutterWidthDec = forms.IntegerField(required = False, label='Gutter Width')
rightLWidthDec = forms.IntegerField(required = False, label='Right Lane Width')
centerLWidthDec = forms.IntegerField(required = False, label='Center Lane Width')
LeftLWidthDec = forms.IntegerField(required = False, label='Left Lane Width')
shoulderTypeInc = forms.ChoiceField(required = False, label='Shoulder Type',choices=shoulderChoices)
shoulderWidthInc = forms.IntegerField(required = False, label='Shoulder Width')
gutterWidthInc = forms.IntegerField(required = False, label='Gutter Width')
rightLWidthInc = forms.IntegerField(required = False, label='Right Lane Width')
centerLWidthInc = forms.IntegerField(required = False, label='Center Lane Width')
LeftLWidthInc = forms.IntegerField(required = False, label='Left Lane Width')
comment = forms.CharField(required = False, label='Comments', widget=forms.Textarea)
stateList=[("",""),("AL",'AL'),("AK",'AK'),("AZ",'AZ'),("AR",'AR'),("CA",'CA'),("CO",'CO'),("CT",'CT'),("DE",'DE'),("FL",'FL'),("GA",'GA'),("HI",'HI'),("ID",'ID'),("IL",'IL'),("IN",'IN'),("IA",'IA'),("KS",'KS'),("KY",'KY'),("LA",'LA'),("ME",'ME'),("MD",'MD'),("MA",'MA'),("MI",'MI'),("MN",'MN'),("MS",'MS'),("MO",'MO'),("MT",'MT'),("NE",'NE'),("NV",'NV'),("NH",'NH'),("NJ",'NJ'),("NM",'NM'),("NY",'NY'),("NC",'NC'),("ND",'ND'),("OH",'OH'),("OK",'OK'),("OR",'OR'),("PA",'PA'),("RI",'RI'),("SC",'SC'),("SD",'SD'),("TN",'TN'),("TX",'TX'),("UT",'UT'),("VT",'VT'),("VA",'VA'),("WA",'WA'),("WV",'WV'),("WI",'WI'),("WY",'WY')]
state = forms.ChoiceField(required = False, label='State',choices=stateList)
class Meta:
model = model_testform
fields = '__all__'
答案 0 :(得分:0)
由于某种原因,当我将{{form.author}}值添加到html时,updateview停止将值重置为null。我现在暂时将元素隐藏起来。
*已更改为{{form.author.as_hidden}},一切似乎都正常工作