我正在尝试生成一个可以在单个字段中处理多个值的 Django 模型。因此,当通过视图查询第一个字段时,用户应通过选择框为第二个字段选择一个值。
为了给出问题的背景,我的播种装置看起来像这样......
[
{
"model":"myapp.location",
"pk":1,
"fields":{
"county": "countyname",
"places":{
"name": "placename",
"name": "placename",
"name": "placename",
"name": "placename",
"name": "placename"
}
}
}
]
在上述方案中,位置是我的模型的预期名称。现在,通过表单,我希望向用户显示"县名"。选择县名后,应向用户显示所选县的"地名"供他们选择。
我已经为模型尝试了以下格式...
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
现在,我知道抛出的错误(未定义"位置"(是有道理的。我在问是否有办法定义它(位置(,就像它在夹具中一样,或者是否有人对这样的模型有更好的实现......欢迎和赞赏任何替代方式,因为我现在想不出任何东西。
因此,在按照上面评论中的建议摆弄了两个模型和外键之后,我决定修改模型,这也导致了更换夹具。我在这里阅读了Postgres + Django中的ArrayFields。我将字段"places"修改为数组字段,如下所示:
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
后, 它奏效了,数据库被播种了!