我在
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.缺点是它会将您的应用程序限制为您决定使用触发器支持的数据库.