在我的應用程序中,我有用戶,每個用戶都可以講幾種語言,每種語言都處於不同的級別。所以,這就是我寫我的模型:Django:爲具有ManyToMany-Through關係的模型編寫創建/更新模板
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)
我的疑問是我應該怎麼寫爲用戶配置創建/更新的模板。我不知道。這個想法是有這樣的事情(這是從okcupid.com的截圖):
當然,我可以用大量的JavaScript做手工,也許一個JavaScript模板引擎增加新的語言到名單,但它處理關係聽起來很瘋狂,我敢肯定我錯過了一些很酷的Django功能來處理這個問題。
什麼是正確的方法來做到這一點?
基本上,你會爲你的'SpeakingLevel'模型創建一個內聯formset並將其附加到你的'UserProfile'表單。請參閱[文檔](https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets)。我認爲這會給你你想要的。 –
內聯formset加上[django-formset-js](https://pypi.python.org/pypi/django-formset-js/)做了訣竅。謝謝! –