【问题标题】:Django data validation in form (admin/auth/user)表单中的 Django 数据验证 (admin/auth/user)
【发布时间】:2011-05-14 02:31:00
【问题描述】:

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

用户资料:

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 个字段用于扩展,但这并不总是正确的。如何正确循环每个内联字段?

【问题讨论】:

  • 您现在如何将其作为内联添加到用户表单中?这会影响您如何使用验证等。
  • Extension 和 UserProfile 在我的 models.py 中是独立的模型,我正在 admin.py 中扩展它们。扩展有一个外键到用户和用户配置文件到用户和客户端。

标签: django django-admin django-forms


【解决方案1】:

如何正确遍历每个内联字段?

您可以使用list comprehension 循环访问它们:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多