【发布时间】:2017-11-01 10:55:08
【问题描述】:
我在 Django 1.11 中,我的问题很简单:
我读了这些帖子:
- Extending the User model with custom fields in Django
- https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html
我不确定当用户存在时会创建/更新 StudentCollaborator 用户(数据库中已经有用户,所以我不能简单地重做东西)。
我当前的代码如下所示:
# Create your models here.
class StudentCollaborator(models.Model):
# https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-model
user = models.OneToOneField(User, on_delete=models.CASCADE)
"""" code postal : pour l'instant que integer"""
code_postal = models.IntegerField(null=True, blank=False)
"""" flag pour dire si l'user a activé le système pour lui """
collaborative_tool = models.BooleanField(default=False)
""" Les settings par défaut pour ce user """
settings = models.ForeignKey(CollaborativeSettings)
def change_settings(self, new_settings):
self.settings = new_settings
self.save()
""" https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html#onetoone """
""" Signaux: faire en sorte qu'un objet StudentCollaborator existe si on a un modele """
@receiver(post_save, sender=User)
def create_student_collaborator_profile(sender, instance, created, **kwargs):
if created:
""" On crée effectivement notre profile """
StudentCollaborator.objects.create(
user=instance,
collaborative_tool=False,
settings=CollaborativeSettings.objects.create() # Initialisé avec les settings par défaut
)
你能帮帮我吗?
谢谢
【问题讨论】:
-
所以您想对模型进行更改?更改后您可以执行 manage.py makemigration 和 manager.py migrate 将现有用户数据迁移到新模型
-
如果你想为已经存在的用户创建
StudentCollaborator,你应该创建数据迁移,read here -
感谢您的回答。我不知道数据迁移处理扩展用户模型...
-
...该死,数据库中没有简单的 StudentCollaborator 行^^
标签: python django python-2.7 django-models