2012-01-18 16 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