2012-01-18 3 views
1

私は自然に私が始めた、私のユーザーは、彼らが話すラング(複数可)を述べることができるようにする必要があります:Djangoにはglobal_settings.LANGUAGESのManyToMany関係がありますか?

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

「複数の言語を使用する」とはどういう意味ですか? –

+0

同じ内容を複数の言語で提供する必要がある場合は、[django-rosetta](https://github.com/mbi/django-rosetta)アプリケーションをご覧ください。 – jcollado

+0

私は各ユーザーが話す言語のリストを用意しようとしています。 –

答えて

4

どの程度...

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

私はあなたが言語(それが中で話されている国のように)、あなただけのユーザーが一覧表示にしたいについての他のデータを保持する必要がないと仮定しています彼らが話す言語。他のデータを保持する必要がある場合は、多対多の関係を使用する必要があります。

+0

オブジェクト間に線を引く奇妙な方法ですが、この場合は意味があります。ありがとう! –

+0

@Daniel:Odd?それはまったく逆です。ところで、Djangoには[後方の関係を追跡する]機能があります(https://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward)。 – cha0site

関連する問題