Sử dụng Configurable user model mới từ Django 1.5 (1, 5, 0, 'beta', 2) tôi nhận được lỗi này khi chạy manage.py createsuperuser cố gắng thiết lập một chính nước ngoài của một trường bắt buộc:Khóa ngoài theo trường bắt buộc trên mô hình người dùng có cấu hình Django 1.5, tạo superuser nói: AttributeError: đối tượng 'NoneType' không có thuộc tính '_state'
AttributeError: 'NoneType' object has no attribute '_state'
Kể từ khi tôi đã là một fixtures/initial_data.yaml với các giá trị tôi cần cho mô hình của tôi sử dụng, quy trình làm việc là:
- Tạo cơ sở dữ liệu
- python manage.py syncdb
- Trả lời "không" cho câu hỏi Bạn vừa cài đặt hệ thống xác thực của Django, có nghĩa là bạn không có bất kỳ superusers nào được xác định. Bạn có muốn tạo một tài khoản ngay bây giờ không? (Yes/no)
- cài đặt 14.264 đối tượng (s) từ 1 vật cố (s)
- python manage.py createsuperuser
tôi cố gắng tạo superuser sau khi đồ đạc được nhập khẩu, vì vậy đây là không phải là một vấn đề gây ra bởi một bảng cơ sở dữ liệu rỗng cho mô hình Thành phố.
Mã trích đoạn, dựa trên documentation:
models.py
class City(models.Model):
city = models.CharField(max_length=70, help_text="City.")
state = models.CharField(max_length=2, help_text="State.")
class Meta:
ordering = ['city']
def __unicode__(self):
return "%s (%s)" % (self.city, self.state)
class PersonaManager(BaseUserManager):
[...]
def create_superuser(self, email, name, birthplace, password):
"""
Creates and saves a superuser with the given email, date of
birth and password.
"""
user = self.create_user(email,
password=password,
name=name,
birthplace=birthplace,
)
user.is_admin = True
user.save(using=self._db)
return user
class Person(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
db_index=True,
)
name = models.CharField(max_length=60)
birthplace = models.ForeignKey('myapp.City', related_name="person_birthplace")
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = PersonaManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name', 'birthplace']
Làm thế nào tôi có thể nhận được chìa khóa nước ngoài làm việc trên mô hình của tôi sử dụng trên một trường bắt buộc? Cảm ơn bạn.
Edit: Traceback từ manage.py createsuperuser --traceback
:
Traceback (most recent call last):
File "/home/asd/Envs/envdjango15/local/lib/python2.7/site-packages/django/core/management/base.py", line 222, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/asd/Envs/envdjango15/local/lib/python2.7/site-packages/django/core/management/base.py", line 252, in execute
output = self.handle(*args, **options)
File "/home/asd/Envs/envdjango15/local/lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 112, in handle
user_data[field_name] = field.clean(raw_value, None)
File "/home/asd/Envs/envdjango15/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 211, in clean
self.validate(value, model_instance)
File "/home/asd/Envs/envdjango15/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1014, in validate
using = router.db_for_read(model_instance.__class__, instance=model_instance)
File "/home/asd/Envs/envdjango15/local/lib/python2.7/site-packages/django/db/utils.py", line 142, in _route_db
return hints['instance']._state.db or DEFAULT_DB_ALIAS
AttributeError: 'NoneType' object has no attribute '_state'
AttributeError: 'NoneType' object has no attribute '_state'
Stacktrace hoàn chỉnh ở đâu? – borges
Tôi đã thực hiện createuperuser với tùy chọn traceback: Tôi đã bao gồm kết quả ở trên. – chirale
Bạn đang sử dụng nhiều cơ sở dữ liệu trong ptoject của bạn? – OrPo