我可以更新using ( ) 的height
属性,如下所示:MyLittleModel
MyModelForm
OneToOneField(MyLittleModel)
模型.py
class MyLittleModel(models.Model):
height = models.IntegerField()
has_color = models.NullBooleanField(null=True, blank=True)
class MyModel(models.Model):
my_little_model = models.OneToOneField(MyLittleModel)
age = models.IntegerField()
is_male = models.BooleanField(default=False)
表格.py
class MyModelForm(forms.ModelForm):
height = forms.IntegerField(max_length=30)
class Meta:
model = MyModel
fields = ("height",
"age")
视图.py
class MyUpdateView(UpdateView):
form_class = MyModelForm
model = MyModel
template_name = 'my_template.html'
def form_valid(self, form):
my_little_model = MyLittleModel.objects.create(form.cleaned_data["height"])
form.instance.my_little_model = my_little_model
form.instance.save()
return super(MyUpdateView, self).form_valid(form)
def get_success_url(self):
return reverse("my_list_view")
网址.py
urlpatterns = patterns('',
url(regex=r'^update/(?P<pk>\d+)/$', view=MyUpdateView.as_view(), name="my_update_view"),
)
我认为这不是一种好的编码风格,因为这会迫使您在 ModelForm 和 View 中修改代码,最好只在一个位置发生这种情况。
那么是否可以在my_little_model.height
不修改我的视图代码的情况下设置一个值?
注意:我不喜欢这个问题的标题,如果有人建议将其重命名为更具可读性的名称,请告诉我。