【问题标题】:Django Model Settings, but not Per-ObjectDjango 模型设置,但不是每个对象
【发布时间】:2018-12-18 20:00:46
【问题描述】:

我正在尝试为每个模型设置一次自定义变量集。例如,模型对象可能具有以下变量:

  • has_meetings
  • has_cmets
  • has_attachments

我想要完成的是为每个模型指定一次设置,而不是为每个模型实例指定一次。

最初,我尝试过:

class BaseModel(models.Model):
   has_comments = Boolean(default=True)
   has_meetings = Boolean(default=True)

但后来我意识到这将在管理员中传播到对象的每个实例。我想做的是适用于 BaseModel 的任何子类的东西,但不适用于每个实例。

有人遇到过这个问题吗?解决方法是什么?

【问题讨论】:

  • "Boolean" 是从哪里导入的?
  • 您希望它在类中而不是在实例中?像私人领域?这会有帮助吗? stackoverflow.com/questions/8180740/…
  • 你有与 BaseModel 相关的类 cmets 吗?
  • @A'zamMamatmurodov - 我不确定你的意思。
  • 你可以使用的一种技术是自己创建一个生成 django 类的元类。在您的元类中,您可以放置​​您想要的任何自定义字段。然后在 Django 中,您的模型可以从元类构造他们想要的类。这有意义吗?

标签: django django-models


【解决方案1】:

你应该使用 class var 来完成它:

class BaseModel(models.Model):
    has_comments = True
    has_meetings = True

您可以通过:BaseModel.has_cmets 获取它

【讨论】:

  • 我只希望它在模型上可用,而不是模型实例上。
  • 我也在考虑这样的方法。这些实际上只存在于模型(类)上,而不是实例上。您仍然可以通过实例访问它(只读,不能写入),但它是类属性而不是实例属性。这种方法有什么问题?
猜你喜欢
  • 2018-04-18
  • 2012-02-02
  • 2015-08-27
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
  • 2017-07-08
相关资源
最近更新 更多