当前位置: 首页 > 面试题库 >

限制要创建的模型实例数-Django

昌正奇
2023-03-14
问题内容

我有只希望从中创建一个实例的模型,不应再允许更多实例。

这可能吗?我有感觉到已经在某处完成了此操作,但是很遗憾,我无法找到它。

编辑:我需要一个愚蠢的简单CMS。我有一个FrontPage和Page类继承的抽象类。我只希望能够创建一个首页对象。

FrontPage对象和Page对象之间的区别在于,它们应该具有略有不同的字段和模板,并且如上所述,只能创建一个FrontPage。


问题答案:

我想自己做类似的事情,发现Django的模型验证为执行提供了便利:

from django.db import models
from django.core.exceptions import ValidationError

def validate_only_one_instance(obj):
    model = obj.__class__
    if (model.objects.count() > 0 and
            obj.id != model.objects.get().id):
        raise ValidationError("Can only create 1 %s instance" % model.__name__)

class Example(models.Model):

    def clean(self):
        validate_only_one_instance(self)

这不仅会阻止创建新实例,而且Django管理员界面实际上会报告创建失败,其原因是“只能创建1个实例实例”(而文档中的早期返回方法并未说明为什么保存无效)。



 类似资料:
  • 如何知道django模型的一个实例何时在sqlite中创建了?我尝试了许多方法,但是我不知道或不知道我的数据库实例是何时创建的 从datetime导入datetime,time delta time _ threshold = datetime . now()-time delta(hours = 4)results = x . objects . filter(created _ _ lt =

  • 本文向大家介绍Django 根据数据模型models创建数据表的实例,包括了Django 根据数据模型models创建数据表的实例的使用技巧和注意事项,需要的朋友参考一下 如果使用默认的数据库 SQLite3,则无需配置settings.py 使用其他数据库,则需要配置settings.py,这里以Mysql为例; 在models.py中完成数据模型的创建: 并且在admin.py中完成注册: 最

  • 英文原文:http://emberjs.com/guides/getting-started/creating-a-new-model/ 接下来,我们将更新我们的静态HTML<input>为一个Ember视图,以便能够提供更多复杂一些的行为。我们将index.html中的新建待办事项的<input>替换为一个{{input}}助手: 1 2 3 4 5 6 7 8 9 {{! ... 为保持代码

  • 在简单的示例中你可以使用 java.lang 和 java.util 包中的类, 还有用户自定义的Java Bean来构建数据对象: 使用 java.lang.String 来构建字符串。 使用 java.lang.Number 来派生数字类型。 使用 java.lang.Boolean 来构建布尔值。 使用 java.util.List 或Java数组来构建序列。 使用 java.util.Ma

  • 我有一个关于常量类型的问题,这些常量被限制在特定的值,以及在GO中如何实现这些。假设我创建了一个类型,它有两个常量值和,我希望限制该类型()的用户创建类型的其他值。是否通过创建包并使值和可见,并使类型仅限于包含包来实现这一点?例如,请参见下面的代码 这是将类型限制为某些常量值的正确方法吗?

  • 问题内容: 我正在尝试集成一个第三方Django应用程序,该应用程序做出了不幸的决定继承自,这对于可插拔应用程序来说是一个很大的禁忌。引用马尔科姆·特雷丁尼克(Malcolm Tredinnick): 不过,更重要的是,就像在Python中一样,你不能使用Django的模型继承来“贬低”。就是说,如果你已经创建了User实例,那么你必须在不掩饰的情况下使该实例与你尚未创建的子类实例相对应。 好吧,