Updateview将用户设置为空

时间:2019-10-16 15:33:34

标签: python django

由于某些原因使用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__'

1 个答案:

答案 0 :(得分:0)

由于某种原因,当我将{{form.author}}值添加到html时,updateview停止将值重置为null。我现在暂时将元素隐藏起来。

*已更改为{{form.author.as_hidden}},一切似乎都正常工作