Django:为具有ManyToMany-Through关系的模型编写创建/更新模板

时间:2014-05-16 19:49:23

标签: django django-models

在我的应用程序中,我有用户,每个用户可以说几种语言,每种语言都处于不同的级别。所以这就是我写模型的方式:

class Language(models.Model):
    name = models.CharField(max_length=255

class UserProfile(AbstractUser):
    languages = models.ManyToManyField(Language, through='SpeakingLevel')

class SpeakingLevel(models.Model):
    user = models.ForeignKey(UserProfile)
    language = models.ForeignKey(Language)

    LEVEL_OK = 1
    LEVEL_BAD = 2
    LEVEL_CHOICES = (
        (1, "Ok"),
        (2, "Bad")
    )
    level = models.IntegerField(null=True,
                                choices=LEVEL_CHOICES)

我怀疑的是我应该如何编写用于创建/更新UserProfile的模板。我不知道。想法是这样的(这是来自okcupid.com的截图):

enter image description here

当然,我可以使用大量的javascript手动完成,也可以使用javascript模板引擎将新语言添加到列表中,但这对于处理关系来说听起来很疯狂,我敢肯定我错过了一些很酷的Django功能来处理这个问题。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

当您在django管理面板中创建UserProfile时,此解决方案适用。

Django有inlines之类的东西,但是问题在于,当您创建UserProfile并且转到编辑视图后,带有语言的部分将不可见,那么您将看到内联的语言。

内联已经拥有所有必需的javascript代码:)

PS。如果您发现其他“酷”解决方案让我知道评论,我很好奇:)