USStateField
является частью django.forms
;в то время как ManyToManyField
, если часть django.models
: вещи из django.forms
не могут использоваться в определениях модели.
Решение состоит в том, чтобы создать отдельную модель, которая содержит все эти состояния, или использовать CharField
со списком вариантов доступных для них.
Реализация с ManytoManyField
может выглядеть следующим образом:
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)
Предполагая, что вы уже создали USState
экземпляров, вы можете добавить их к MyModel
следующим образом:
m = MyModel()
m.territories.add(USState.objects.get(name="AL"))
m.save()
Дополнительные примеры можно найти в Django документах, например, здесь .