【问题标题】:Django Admin - Duplicating and Filtering Many to Many fields in formDjango Admin - 复制和过滤表单中的多对多字段
【发布时间】:2014-01-15 03:09:40
【问题描述】:

我有点卡住了……

情况就是这样。我有一个比赛模型、一个球员模型和一个团队模型。

Match 与 Player 有多对多的关系(玩家参与比赛) 比赛有外场主队 比赛有外地客队 团队与玩家是一对多的关系

我想做的是在编辑比赛时,能够看到 2 个多对多字段,但按团队过滤。例如,第一个多对数字段将只显示来自主队的球员,而第二个多对数字段将只显示来自客队的球员...

我不知道从哪里开始……真的卡住了……

非常感谢, 阿拉

【问题讨论】:

  • 可以粘贴你的示例代码吗?
  • 嗨,除了我的模型,我现在基本上只有一个字段集来显示我的表单......

标签: python django forms django-admin


【解决方案1】:

如果您想根据同一页面中的另一个下拉列表过滤下拉列表而不刷新,那么您将需要某种 AJAX 功能。 Django 管理员将不支持此功能。

但是有几个第三方应用程序使用 JQuery 或其他 Javascript 库来实现您想要的功能。例如:

【讨论】:

  • 嗨,好的,完美!但我需要复制这些字段,它不会让我......
  • 嗨,我尝试了 Django Smart Selects,但它仅在它是外键时才有效...我在 PHP 中做过同样的事情...我可以复制该代码但我不知道,首先,如何编辑表单但仅针对此特定模型(并且仅在下面添加模块)。以及如何检索我插入的字段的值...
  • 也可以查看django-ajax-selects
【解决方案2】:

我会告诉你从哪里开始:

class Team (models.Model):
    players = models.ManyToManyField(Player,...)
    attribute1
    atribtue2
    atribute3


class Player (models.Model):
    name = models.CharField(max_length=100, default='none', verbose_name=_(u'Player Name'))
    team = models.ForeignKey(Team, related_name = "")


class Match (models.Model)
    date = models.DateTimeField(auto_now_add=True, verbose_name=_(u'Date'))
    attribute1 = models.CharField(max_length=100)
    attribute2 = models.IntegerField(values)
    homeTeam = models.ForeignKey(Team, related_name="Home Team")
    visitorTeam = models.ForeignKey(Team,related_name='Visitor Team')
    players = models.ManyToManyField(Player, blank=True, null=True, verbose_name=_(u'sitio web'), related_name=u'product_site')

球员和比赛我向你展示了如何处理关系、外键和多对数,你可以向球员添加一个变量来存储所有比赛...你必须在比赛中创建一些属性来存储目标、错误、卡片.....

我没有尝试此代码,但我认为这可以为您指明方向

【讨论】:

  • 您好,感谢您的回复,我的模型已经完成。我只需要在由球队过滤的 2 个不同的下拉列表中显示球员场....抱歉,如果不清楚。
猜你喜欢
  • 1970-01-01
  • 2018-06-07
  • 2015-07-18
  • 1970-01-01
  • 2016-02-23
  • 2016-12-13
  • 2010-11-16
  • 2011-07-26
  • 2020-03-20
相关资源
最近更新 更多