python – Django – 在模型中加载大型默认值的正确方法

我在
django模型中有一个名为schema的字段,它通常包含一个相当大的json字符串.在创建任何新实例时,我想添加一个默认值(大约2000个字符).

我觉得把整个东西转移到一个变量中的models.py中是相当不干净的.在我的模式(TextField)中加载此默认值的最佳方法是什么?

例:

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

我想了一下.如果我使用json文件在某处存储默认值,那么放置它的最佳位置是什么?显然,如果它位于文件夹中的相同应用程序中,则更为可取.

最佳答案

The text is rather massive. Would span half the file as it is
formatted json which I would like editable in future. I prefer loading
it from a file (like fixtures), just that I want to know if there is a
method already present in Django.

在django,你有两个选择:

>在post_save上侦听,当创建为真时,通过读取文件设置对象的默认值.
>将默认值设置为可调用(函数),并在该方法中读取文件(确保在之后关闭它),并返回其内容.

您还可以将数据粘贴到某个k / v存储区(如redis或memcache)中,以便更快地访问.它也会更好,因为你不会经常打开和关闭文件.

最后,限制性最强的选项是在数据库上设置一个触发器,为您填充.您必须将json存储在数据库中的某个位置.这种方法的附加好处是你可以编写一个django前端来更新json.缺点是它会将您的应用程序限制为您决定使用触发器支持的数据库.

点赞