django-mongodb-engine을 사용하여 사이트를 만듭니다.사용자 정의 사용자 모델의 EmbeddedModelField
나는 다음과 같습니다 사용자 정의 사용자 모델을 가지고 :
class User(AbstractUser):
trigrama = models.CharField(max_length=3, unique=True)
external_email = models.EmailField(unique=True)
phone_number = models.CharField(max_length=20, unique=True)
AbstractUser._meta.get_field_by_name('email')[0]._unique=True
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = [
'first_name', 'last_name', 'trigrama',
'external_email', 'phone_number', 'username'
]
그냥 잘 작동하지만 그때는 사용자 모델에 포함 된 문서를 추가하는 시도 :
permissions = EmbeddedModelField('Permission')
Permission
가있다 다음과 같은 클래스 :
class Permission(models.Model):
computers = ListField(EmbeddedModelField('Computer'))
projects = ListField(EmbeddedModelField('Project'))
scripts = ListField(EmbeddedModelField('Script'))
이제 우리를 크레이트로 만들려고 할 때 내가 사용 Permission()
에 기본 설정을 시도
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 149, in create
return self.get_query_set().create(**kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py", line 416, in create
obj.save(force_insert=True, using=self.db)
File "C:\Python27\lib\site-packages\django\db\models\base.py", line 548, in save
force_update=force_update, update_fields=update_fields)
File "C:\Python27\lib\site-packages\django\db\models\base.py", line 668, in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 215, in _insert
return insert_query(self.model, objs, fields, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py", line 1675, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "C:\Python27\lib\site-packages\djangotoolbox\db\basecompiler.py", line 583, in execute_sql
"field) to None!" % field.name)
IntegrityError: You can't set permissions (a non-nullable field) to None!
: User.objects.create()
나는 다음과 같은 오류 얻을 사용하여 셸에서 어 다음
permissions = EmbeddedModelField('Permission', default=Permission())
하지만를 나는 다음과 같은 오류 얻을 :
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 149, in create
return self.get_query_set().create(**kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py", line 416, in create
obj.save(force_insert=True, using=self.db)
File "C:\Python27\lib\site-packages\django\db\models\base.py", line 548, in save
force_update=force_update, update_fields=update_fields)
File "C:\Python27\lib\site-packages\django\db\models\base.py", line 668, in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 215, in _insert
return insert_query(self.model, objs, fields, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py", line 1675, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "C:\Python27\lib\site-packages\djangotoolbox\db\basecompiler.py", line 579, in execute_sql
connection=self.connection
File "C:\Python27\lib\site-packages\djangotoolbox\fields.py", line 364, in get_db_prep_save
(embedded_model, type(embedded_instance)))
TypeError: Expected instance of type <class 'users.models.Permission'>, not <type 'unicode'>.
을 그렇다면 사용자 정의 사용자 모델에 포함 된 문서를 추가하는 방법은 무엇입니까?
P. 쉘에 Permission()
을 입력하면 괜찮습니다. 유니 코드가 아닌 Permission object
을 반환합니다.
사용자 개체를 만드는 방법을 보여줍니다. –