首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MainClass<-ForeignKey<-OneToOneField?

MainClass<-ForeignKey<-OneToOneField?
EN

Stack Overflow用户
提问于 2018-02-14 14:41:47
回答 1查看 44关注 0票数 0

我需要处理一个业余体育赛事的申请。一个事件有几个距离/子类,每个都有一些限制(年龄等)。

我的模型是

代码语言:javascript
复制
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,但这对我来说很难看。

对于这个更复杂的结构,我应该使用什么?

EN

回答 1

Stack Overflow用户

发布于 2018-02-14 16:59:12

您应该为每个模型创建一个表单,并分别完成它,或者您可以创建真正的柔化表单,它将为您做这件事。

然后,此表单将具有title (事件)、title (Klass)、capacityeventage_min等字段...因此,对于ForeignKey这样的关系字段,您必须使用ChoiceField,它将填充__init__函数中的选项,依此类推。那么它应该有很好的清理功能,这样它才会有唯一有效的数据,最后是save。您将必须查看用户是否已经选择了一个字段或正在创建一个新字段(例如KlassEvent ),然后处理它们并链接和创建所有内容。但这不是最好的解决方案(甚至可以一步完成),但它是一个选择。即使你添加了一些javascript,它看起来也很棒。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48781136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档