python - 动态实例特定的 Django 字段创建

标签 python mysql django django-models

我遇到的情况是,用户模型可以有“X”个需要添加的唯一字段。这些字段需要对其运行查询,因此我不能只向其中添加包含 JSON 字符串的字段。例如,一个用户可能如下所示:

class User(models.Model):
    name = models.CharField()
    age = models.IntegerField()
    sex = models.CharField()
    profession = models.CharField()

下一个可能是:

class User(models.Model):
    name = models.CharField()
    age = models.IntegerField()
    sex = models.CharField()
    badge_number = models.IntegerField()

正如我上面所说,这些唯一字段必须是可查询的。帮助!!

最佳答案

如果您的意思不是 Django/DB 意义上的唯一,您可以尝试使用 postgres JSONField ,一个存储 JSON 且可查询的字段。

文档中的示例代码:

from django.contrib.postgres.fields import JSONField
from django.db import models

class Dog(models.Model):
    name = models.CharField(max_length=200)
    data = JSONField()

    def __str__(self):
        return self.name

以及查询:

>>> Dog.objects.create(name='Rufus', data={
...     'breed': 'labrador',
...     'owner': {
...         'name': 'Bob',
...         'other_pets': [{
...             'name': 'Fishy',
...         }],
...     },
... })
>>> Dog.objects.create(name='Meg', data={'breed': 'collie', 'owner': None})

>>> Dog.objects.filter(data__breed='collie')
<QuerySet [<Dog: Meg>]>

关于python - 动态实例特定的 Django 字段创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52527932/

相关文章:

python - 通过二维数组递归

python - 如何扩展 Pytorch 损失函数

python - 我如何将获取值传递给views.py中的特定模型字段

python - Django模型层中GET和FILTER的区别

python - 来自 Get Name into a List 的 Tkinter 信息

python - 如何从谷歌云转发规则IP地址绑定(bind)发送?

java - Hibernate 表不会自动创建

mysql - 如何根据表 2 中最常见的值显示表 1 中的值?

php - 我如何正确地 `JOIN` 这些表?

python - Django-admin.py 在我的共享主机环境中产生错误