我有模型(这个只是现实生活模型中的例子要大得多):
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,但据我所知,它们仅适用于具有对外关系的模型。也许有人知道如何用formset解决这个问题?
或者另一种(不丑陋)的方式来做到这一点?