生成一个字段中可以有多个值的 Django 模型
Generating a Django Model that can have multiple values in one field
我正在尝试生成一个可以在单个字段中处理多个值的 Django 模型。因此,当通过视图查询第一个字段时,用户应该通过 select 框 select 第二个字段的值。
为了说明问题的背景,我的播种夹具如下所示...
[
{
"model":"myapp.location",
"pk":1,
"fields":{
"county": "countyname",
"places":{
"name": "placename",
"name": "placename",
"name": "placename",
"name": "placename",
"name": "placename"
}
}
}
]
在上面的场景中,location 是我的模型的预期名称。现在,通过一个表单,我希望向用户显示 'countynames'。在 select 输入县名后,应在 selected 县中向用户显示 'placenames' 供他们选择。
我试过以下格式的模型...
class Location(models.Model):
county = models.CharField(max_length=100)
places = models.CharField(max_length=100, choices=places.name)
def __str__(self):
return self.countyname
现在,我知道抛出的错误('places' 未定义)是有道理的。我在问是否有一种方法来定义它(位置),就像它在夹具中一样,或者是否有人对这种模型有更好的实现……欢迎和赞赏任何替代方法,因为我想不出在这一点上任何事情。
所以,按照上面评论中的建议摆弄了两个模型和外键后,我决定修改模型,这也导致更换夹具。我在 Postgres + Django here 中读到了 ArrayFields。我将字段 'places' 修改为 ArrayField,如下所示:
from django.contrib.postgres.fields import ArrayField
class Location(models.Model):
county = models.CharField(max_length=100)
places = ArrayField(models.CharField(max_length=100), blank=True)
def __str__(self):
return self.county
接下来,只需将 JSON 夹具更改为:
[
{
"model":"myapp.location",
"pk":1,
"fields":{
"county": "countyname",
"places":["placename","placename","placename","placename"]
}
}
]
运行python manage.py loaddata fixturename.json
之后,
它起作用了,数据库被播种了!
我正在尝试生成一个可以在单个字段中处理多个值的 Django 模型。因此,当通过视图查询第一个字段时,用户应该通过 select 框 select 第二个字段的值。
为了说明问题的背景,我的播种夹具如下所示...
[
{
"model":"myapp.location",
"pk":1,
"fields":{
"county": "countyname",
"places":{
"name": "placename",
"name": "placename",
"name": "placename",
"name": "placename",
"name": "placename"
}
}
}
]
在上面的场景中,location 是我的模型的预期名称。现在,通过一个表单,我希望向用户显示 'countynames'。在 select 输入县名后,应在 selected 县中向用户显示 'placenames' 供他们选择。
我试过以下格式的模型...
class Location(models.Model):
county = models.CharField(max_length=100)
places = models.CharField(max_length=100, choices=places.name)
def __str__(self):
return self.countyname
现在,我知道抛出的错误('places' 未定义)是有道理的。我在问是否有一种方法来定义它(位置),就像它在夹具中一样,或者是否有人对这种模型有更好的实现……欢迎和赞赏任何替代方法,因为我想不出在这一点上任何事情。
所以,按照上面评论中的建议摆弄了两个模型和外键后,我决定修改模型,这也导致更换夹具。我在 Postgres + Django here 中读到了 ArrayFields。我将字段 'places' 修改为 ArrayField,如下所示:
from django.contrib.postgres.fields import ArrayField
class Location(models.Model):
county = models.CharField(max_length=100)
places = ArrayField(models.CharField(max_length=100), blank=True)
def __str__(self):
return self.county
接下来,只需将 JSON 夹具更改为:
[
{
"model":"myapp.location",
"pk":1,
"fields":{
"county": "countyname",
"places":["placename","placename","placename","placename"]
}
}
]
运行python manage.py loaddata fixturename.json
之后,
它起作用了,数据库被播种了!