次のように( )を使用してheight
属性を更新できます。MyLittleModel
MyModelForm
OneToOneField(MyLittleModel)
models.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")
urls.py
urlpatterns = patterns('',
url(regex=r'^update/(?P<pk>\d+)/$', view=MyUpdateView.as_view(), name="my_update_view"),
)
ビューだけでなく ModelForm でもコードを変更する必要があるため、これは適切なコーディング スタイルではないと思います。
my_little_model.height
私のようにビューコードを変更せずに値を設定することは可能ですか?
注:この質問のタイトルが好きではありません。誰かがもっと読みやすい名前に変更することを提案している場合は、私に知らせてください。