Django 表单中的数据验证(admin/auth/user)

发布于 2024-10-03 11:36:09 字数 771 浏览 2 评论 0原文

在每个人页面的用户管理中,除了默认的 django 字段集之外,我还有两个其他内联(UserProfile 和一个名为“Extension”的模型)。 但是,每当我修改扩展内联中的字段时,我也希望能够处理/验证所有这些字段。

UserProfile:

user = models.ForeignKey(User, unique=True)
client = models.ForeignKey(Client)

分机号:

user = models.ForeignKey(User)
date_created = models.DateTimeField(auto_now_add=True, auto_now=True)
number = models.CharField(max_length=16, unique=False)

例如,当我编辑用户的分机号时,我希望能够获取每个字段内的所有值(这些值是动态的)。现在我像这样使用 self.data[""] :

extension_fields = [self.data["extension_set-0-number"],
                    self.data["extension_set-1-number"],
                    self.data["extension_set-2-number"]]

这带来的一个问题是我假设总是只有 3 个字段用于扩展,但这并不总是正确的。如何正确循环每个内联字段?

in my User administration for each individual's page, besides the default django fieldsets, I also have two other inlines (UserProfile and a model called "Extension").
However, whenever I modify fields in the Extension's inline, I want to be able to process/validate all these fields too.

UserProfile:

user = models.ForeignKey(User, unique=True)
client = models.ForeignKey(Client)

Extension:

user = models.ForeignKey(User)
date_created = models.DateTimeField(auto_now_add=True, auto_now=True)
number = models.CharField(max_length=16, unique=False)

For example, when I'm editing a user's extension numbers, I want to be able to grab all values inside each field (which are dynamic). Right now I'm using self.data[""] like this:

extension_fields = [self.data["extension_set-0-number"],
                    self.data["extension_set-1-number"],
                    self.data["extension_set-2-number"]]

One problem this poses is that I'm assuming there always will only be 3 fields for extension, which is not always true. How can I loop through each inline field correctly?

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

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

发布评论

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

评论(1

如梦 2024-10-10 11:36:09

如何正确循环每个内联字段?

您可以使用 列表理解 来循环它们:

extension_fields = [self.data[k] for k in self.data.keys() if 'extension_set' in k]

我不完全相信然而,这是实现这一点的正确方法。您没有提供足够的示例代码来准确解释您在做什么。如果您尝试处理和验证此数据,Django 应该为您执行此操作(可能使用 ModelForm)。您不必自己对此进行硬编码。

How can I loop through each inline field correctly?

You can use a list comprehension to loop through them:

extension_fields = [self.data[k] for k in self.data.keys() if 'extension_set' in k]

I'm not entirely convinced this is the correct way to implement this, however. You haven't provided enough example code to explain what you're doing exactly. If you're trying to process and validate this data, Django should be doing this for you (probably using a ModelForm). You shouldn't have to be hardcoding this yourself.

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