在我的应用程序中,我有用户,每个用户可以说几种语言,每种语言都处于不同的级别。所以这就是我写模型的方式:
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的截图):
当然,我可以使用大量的javascript手动完成,也可以使用javascript模板引擎将新语言添加到列表中,但这对于处理关系来说听起来很疯狂,我敢肯定我错过了一些很酷的Django功能来处理这个问题。
这样做的正确方法是什么?
答案 0 :(得分:1)
当您在django管理面板中创建UserProfile时,此解决方案适用。
Django有inlines之类的东西,但是问题在于,当您创建UserProfile并且转到编辑视图后,带有语言的部分将不可见,那么您将看到内联的语言。
内联已经拥有所有必需的javascript代码:)
PS。如果您发现其他“酷”解决方案让我知道评论,我很好奇:)