Django 如何在许多领域预先填充USStateField?

Django 如何在许多领域预先填充USStateField?,django,Django,ManyToManyField的第一个参数必须是模型、模型名称或字符串“self” 有人可以帮助我如何将USStateField值放入ManyToManyField 谢谢DUSStateField是django.forms的一部分;而django.models的ManyToManyFieldif部分:来自django.forms的内容不能用于模型定义 解决方案是创建一个包含所有这些状态的单独模型,或者使用带有可用状态列表的CharField 使用ManytoManyField的实现可能如下所示:

ManyToManyField的第一个参数必须是模型、模型名称或字符串“self”

有人可以帮助我如何将USStateField值放入ManyToManyField


谢谢D

USStateField
是django.forms的一部分;而
django.models
ManyToManyField
if部分:来自
django.forms
的内容不能用于模型定义

解决方案是创建一个包含所有这些状态的单独模型,或者使用带有可用状态列表的
CharField

使用
ManytoManyField
的实现可能如下所示:

territories = models.ManyToManyField(USStateField)
假设您已经创建了
USState
实例,您可以将它们添加到
MyModel
中,如下所示:

class USState(models.Model):
    STATE_CHOICES = (
        ('AL', 'Alabama'),
        ('AK', 'Alaska'),
        # ... and so on
    )
    name = models.CharField(max_length=2, choices=STATE_CHOICES)

class MyModel(models.Model):
    territories = models.ManyToManyField(USState)

在Django文档中可以找到更多示例,例如。

为了在jro的答案基础上构建,我使用localflavors.us.models.USStateField创建了一个简单的USState模型:

m = MyModel()
m.territories.add(USState.objects.get(name="AL"))
m.save()
然后修改初始迁移以自动插入localflavors选项中的所有状态:

from django.db import models

from localflavor.us.models import USStateField


class USState(models.Model):
    name = USStateField()

jro,我想问另一个问题。你的答案可以是很多很多领域,也可以不是?这是因为我想要一个多状态字段。先生,你能给我一些代码吗?我真的需要它。乌斯泰特菲尔德在曼尼托曼尼菲尔德。谢谢在你的代码中,这是不是应该先添加一些USState,然后它将填充到manytomany字段中,因为我想让它们自动填充到manytomanyfield中。我不知道你说的“填充manytomany字段”是什么意思,但默认情况下,你可以有可用的数据。
from django.db import models, migrations

import localflavor.us.models
from localflavor.us.us_states import STATE_CHOICES


def add_states(apps, schema_editor):
    USState = apps.get_model("geography", "USState")
    for state in STATE_CHOICES:
        USState.objects.create(name=state[0])


class Migration(migrations.Migration):

    dependencies = []

    operations = [
        migrations.CreateModel(
            name='USState',
            ...
        ),

        migrations.RunPython(add_states)
    ]