2012-01-18 54 views
1

我需要的用户能够说明他们讲索绪尔(S),所以很自然我开始:Can Django与global_settings.LANGUAGES有多对多的关系吗?

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

class UserProfile(models.Model): 
    languages = models.ManyToManyField("Language", related_name="users") 

但后来我发现这一点:

from django.conf.global_settings import LANGUAGES 

这一点我想使用,如果只是为了坚持DRY原则。问题是,我无法弄清楚如何让用户拥有多种语言。

+0

“有多种语言”是什么意思? – 2012-01-18 11:46:34

+0

如果您需要提供多种语言的相同内容,您可能需要查看[django-rosetta](https://github.com/mbi/django-rosetta)应用程序。 – jcollado 2012-01-18 11:56:24

+0

我只是想要列出每个用户所说的语言。 – 2012-01-18 13:37:02

回答

4

......怎么

class LanguageSpoken(models.Model): 
    user = models.ForeignKey("UserProfile") 
    language = models.CharField(max_length = 2, choices = LANGUAGES) 

我假设你并不需要保存有关的语言(如它在发言的国家),你只是希望用户列出任何其他数据他们说的语言。如果您确实需要保留其他数据,则必须使用多对多关系。

+0

绘制物体之间线条的奇怪方式,但我猜在这种情况下它是有道理的。谢谢! – 2012-01-18 13:39:07

+0

@Daniel:奇怪?这只是另一种方式。顺便说一句,Django有一个[关注后面的关系]的工具(https://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward)。 – cha0site 2012-01-18 13:52:02