【发布时间】:2018-08-17 10:17:33
【问题描述】:
我有一个 django 模型,它基本上是一个名为 Contexts 的组。它包含一些字段,如 name、description 和一个用户。下面是定义的模型
class Contexts(models.Model):
context_name = models.CharField(max_length=50)
context_description = models.TextField()
users = models.CharField(max_length=255, null=False)
目前每个Context只有一个用户。但是我想将更多用户添加到同一个Context。所以现在我想将users字段更改为数组字段。顺便说一下我使用django + postgres。
这就是我的工作
class Contexts(models.Model):
context_name = models.CharField(max_length=50)
context_description = models.TextField()
users = ArrayField(ArrayField(models.TextField()))
但是我如何将用户附加到users 字段?这是我通常会做的添加上下文
@csrf_exempt
def context_operation(request):
user_request = json.loads(request.body.decode('utf-8'))
if request.method == "POST":
try:
if user_request.get("action") == "add":
print("add")
conv = Contexts.objects.create(
context_name=user_request.get("context_name"),
context_description=user_request.get("context_description"),
users=user_request.get("user")
)
except Exception as e:
print("Context saving exception", e)
return HttpResponse(0)
return HttpResponse(1)
但是我如何一次将一个用户附加到同一上下文中的users 字段(假设传递了相同的上下文名称)?
【问题讨论】:
-
通常最好不将事物存储为数组。首先,并不是所有的数据库都有数组,而且,做(高效的)查询通常只会带来更多的麻烦。您通常将多对关系存储在单独的表中。 Django 对此有支持:
ManyToManyField.