Django Dict作为模型字段
我想在模型中添加一个Django Dict作为模型字段,django,django-models,python-2.7,django-admin,Django,Django Models,Python 2.7,Django Admin,我想在模型中添加一个dict字段,在管理员界面上显示dict,并能够从管理员界面进行编辑 例如,我有一段感情 dict={'sister':rel_score,'mother':rel_score,'father':rel_score} 其中,rel_score(默认值=0)是每个关系的分数。我想将这个dict存储到我的模型中,并在admin中显示它,这样我就可以为我的admin上的每个关系分配这些rel_分数 此外,任何关于如何将分数(优先级)分配给不同元素,并根据这些分配的分数返回值的示例都
dict
字段,在管理员界面上显示dict
,并能够从管理员界面进行编辑
例如,我有一段感情
dict={'sister':rel_score,'mother':rel_score,'father':rel_score}
其中,rel_score
(默认值=0)是每个关系的分数。我想将这个dict
存储到我的模型中,并在admin中显示它,这样我就可以为我的admin上的每个关系分配这些rel_分数
此外,任何关于如何将分数(优先级)分配给不同元素,并根据这些分配的分数返回值的示例都非常有用。由于基础数据库不支持这种类型的数据结构,因此不可能有DictField 您可以有一个RelationshipScore模型来存储您的关系,并有一个ForeignKey从它到现有模型(我将以user为例)。例如: 然后,可以向现有模型中添加函数以获取值:
class User(models.Model):
def get_relationship(self, rel):
return RelationshipScore.objects.get(relationship=rel, user=self)
def get_lowest_relationship(self):
return RelationshipScore.objects.filter(user=self).order_by("-score")[0]
从Django 1.8开始,postgres用户还可以选择使用
Postgres用户可以轻松使用jsonfield:
from django.db import models
from django.contrib.postgres.fields import JSONField
import json
class Yourmodel(models.Model):
name = models.CharField()
dict_json = JSONField(blank=True, null=True)
def __str__(self):
return self.name
在您的应用程序中:
the_dict = {'a':1,'b':2}
Yourmodel.dict_json = json.dumps(the_dict)
Yourmodel.save()
这个问题可能重复的地方已经很老了。从那以后,django和可用的应用程序都发生了很大的变化,所以现在可能有了新的方法。您可以使用json字段来表示dict吗?还有json模型字段的其他应用程序:
from django.db import models
from django.contrib.postgres.fields import JSONField
import json
class Yourmodel(models.Model):
name = models.CharField()
dict_json = JSONField(blank=True, null=True)
def __str__(self):
return self.name
the_dict = {'a':1,'b':2}
Yourmodel.dict_json = json.dumps(the_dict)
Yourmodel.save()