私はモデルを持っています(実際のモデルのこの例ははるかに大きいです):
class Ride(models.Model):
account = models.ForeignKey(
settings.AUTH_USER_MODEL, related_name='dives')
date = models.DateField(blank=True, null=True)
referenceA = models.ForeignKey(
RefA,
related_name="rides",
blank=True,
null=True
)
# in real life there is much more options and group of option
optionA = models.FloatField(
blank=True, null=True
)
optionB = models.FloatField(
blank=True, null=True
)
このモデルを次のように分割しました。
class Ride(models.Model):
account = models.ForeignKey(
settings.AUTH_USER_MODEL, related_name='dives')
date = models.DateField(blank=True, null=True)
referenceA = models.ForeignKey(
RefA,
related_name="rides",
blank=True,
null=True
)
ride_options = models.OneToOneField(
RideOption
)
class RideOption(models.Models):
optionA = models.FloatField(
blank=True, null=True
)
optionB = models.FloatField(
blank=True, null=True
)
ここで、関連するすべてのモデル インスタンス (RideOption など) を使用して Ride モデル インスタンスを編集するページを作成したいと考えています。モデルごとに ModelForm を使用することを好みますが、すべてをまとめて検証するにはどうすればよいでしょうか。この検証をビューで次のように記述できます。
ride_form = RideModelForm(...)
ride_option_form = RideOptionModelForm(...)
if ride_option_form.is_valid():
if ride_form.is_valid():
# now save
しかし、私にとっては本当に醜いもので、関連するモデルをたくさん持つことができます。
この検証と内部保存を非表示にする方法はありますか?
私は FormSet を見ましたが、私が理解しているように、それらは外部関係を持つモデルでのみ機能します。おそらく誰かがフォームセットでこれを解決する方法を知っていますか?
または、それを行う別の(醜くない)方法はありますか?