gpt4 book ai didi

Django 多对多通过中间表形式,如管理员的 TabularInline 形式?

转载 作者:行者123 更新时间:2023-12-04 21:25:00 28 4
gpt4 key购买 nike

我想要一个表单来使用指定的中间表添加、编辑和删除多对多关系的值,就像我可以从 Django 的管理 TabularInline 表单中获得的一样。有没有办法做到这一点?我还没有在 Django 的文档中找到它。

我创建了一个表单来编辑 UserProfile,并希望能够使用 UserProfile_Language(语言和熟练程度)添加、编辑和删除多对多。我如何为此制作表格?我如何在 View 中处理这个问题?

我的模型如下:

class Language(models.Model):
LANGUAGE_ENGLISH = 1
LANGUAGE_FRENCH = 2
LANGUAGE_CHOICES = (
(LANGUAGE_ENGLISH, 'English'),
(LANGUAGE_FRENCH, 'French')
)

language = models.SmallIntegerField(choices=LANGUAGE_CHOICES)

class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
languages = models.ManyToManyField(Language, null=True, blank=True, through='UserProfile_Language')

class UserProfile_Language(models.Model):
FLUENT = 1
OK = 2
PROFICIENCY_CHOICES = (
(FLUENT, 'Fluent'),
(OK, 'Okay')
)

userprofile = models.ForeignKey(UserProfile)
language = models.ForeignKey(Language)
proficiency = models.SmallIntegerField(choices=PROFICIENCY_CHOICES)

最佳答案

我假设你的意思是在前端而不是在管理员中。我相信您可以使用表单集来做到这一点。 (http://docs.djangoproject.com/en/dev/topics/forms/formsets/)。您将为要在表单集中使用的直通表创建一个表单。

此外,您可能已经简化了用于发布的模型,但是如果语言模型真的只是一个选择字段,为什么不将 language 和 userprofile_language 合二为一呢?您可以用选择字段替换 ForeignKey 并获得相同的行为。这将使您的显示更容易。 (忽略这是语言实际上有更多的领域)

关于Django 多对多通过中间表形式,如管理员的 TabularInline 形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5132973/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com