姜戈“更有活力”形式

发布于 2024-11-02 05:29:39 字数 194 浏览 4 评论 0原文

我有一个关于“更动态”的 django 表单的问题。

比方说,我有一个网页,它代表带有用户列表的帐户,因此每个帐户将有 1 个或多个用户,有一些 javascript 代码可以生成额外的行以允许输入用户数据。

我认为这是非常常见的用例,但不确定如何实现它,或者简单地说,我不应该担心在这种情况下使用 django 表单?

谢谢

I have a question about "more dynamic" django forms.

say, i have a webpage which represents Account with a list of users, so each account will have 1 or more users, there is some javascript code to generate extra row to allow user data gets entered.

i think this is pretty common use case, but not sure how to make it happen, or simply, i shouldn't worry about using django forms in this case?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绝情姑娘 2024-11-09 05:29:39

您应该为此使用 formset 。具体来说,您可以使用 内联表单集工厂达到同样的效果。

从该文档来看,

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    author = models.ForeignKey(Author)
    title = models.CharField(max_length=100)

>>> from django.forms.models import inlineformset_factory
>>> BookFormSet = inlineformset_factory(Author, Book)
>>> author = Author.objects.get(name=u'Mike Royko')
>>> formset = BookFormSet(instance=author)

如果您使用 django-admin,您可以使用 javascript 显示这些内联以添加新条目,方法是使用 InlineModelAdmin 以堆叠方式或表格方式。

You should use a formset for that. Specifically, you can use the Inline formset factory to achieve the same.

From the documentation of that,

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    author = models.ForeignKey(Author)
    title = models.CharField(max_length=100)

>>> from django.forms.models import inlineformset_factory
>>> BookFormSet = inlineformset_factory(Author, Book)
>>> author = Author.objects.get(name=u'Mike Royko')
>>> formset = BookFormSet(instance=author)

If you are using the django-admin, you can display these inlines with the javascript to add a new entry, by using the InlineModelAdmin in either the stacked way, or tabular way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文