我在django模型中有一个名为schema的字段,它通常包含一个相当大的json字符串。有一个默认值(大约2000个字符),我希望在创建任何新实例时添加该值。
我觉得把整件事都放在一个变量中是不干净的在我的模式(即models.py)中加载此默认值的最佳方法是什么?
例子:

class LevelSchema(models.Model):
    user = models.ForeignKey(to=User)
    active = models.BooleanField(default=False)
    schema = models.TextField() # Need a default value for this

我想了一下。如果我使用一个json文件将默认值存储在某个地方,那么最好将它放在什么地方显然,如果它位于同一个应用程序的文件夹中,则更可取。

最佳答案

文本相当庞大。会覆盖一半的文件
格式化的json,我希望以后可以编辑。我更喜欢装货
它来自一个文件(如fixtures),只是我想知道是否有
Django中已存在方法。
在Django,你有两个选择:
监听post_save,当created为真时,通过读取文件设置对象的默认值。
将默认值设置为可调用(函数),然后在该方法中读取文件(确保在之后将其关闭),并返回其内容。
您还可以将数据保存在某些K/V存储(如redis或memcache)中,以加快访问速度。这也会更好,因为你不会经常打开和关闭文件。
最后,最严格的选择是在数据库上设置一个触发器来为您填充您必须将json存储在数据库中的某个位置这种方法的附加好处是,您可以编写django前端来更新json。缺点是它会将应用程序限制在那些决定用触发器支持的数据库中。

10-06 05:19
查看更多