我需要处理一个业余体育赛事的申请。一个事件有几个距离/子类,每个都有一些限制(年龄等)。
我的模型是
class Event(models.Model):
title = models.CharField(max_length=255)
# more fields
class Klass(models.Model):
title = models.CharField(max_length=255)
capacity = models.IntegerField()
event = models.ForeignKey('Event', related_name="klasses")
# more fields
class TeamRestrictions(models.Model):
age_min = models.IntegerField()
age_max = models.IntegerField()
klass = models.OneToOneField(TeamRestrictions, related_name='restrict')
# more fields我想有一个单一的页面,用户在其中创建一个新的事件:命名它,添加几个子类,并限制每个子类。好吧,如果没有这种一对一的关系,对于只有几个类的事件,我可以使用FormSet。当然,我可以将所有TeamRestrictions字段都移到Klass,但这对我来说很难看。
对于这个更复杂的结构,我应该使用什么?
发布于 2018-02-14 16:59:12
您应该为每个模型创建一个表单,并分别完成它,或者您可以创建真正的柔化表单,它将为您做这件事。
然后,此表单将具有title (事件)、title (Klass)、capacity、event、age_min等字段...因此,对于ForeignKey这样的关系字段,您必须使用ChoiceField,它将填充__init__函数中的选项,依此类推。那么它应该有很好的清理功能,这样它才会有唯一有效的数据,最后是save。您将必须查看用户是否已经选择了一个字段或正在创建一个新字段(例如Klass的Event ),然后处理它们并链接和创建所有内容。但这不是最好的解决方案(甚至可以一步完成),但它是一个选择。即使你添加了一些javascript,它看起来也很棒。
https://stackoverflow.com/questions/48781136
复制相似问题