2016-08-15 4 views
1

У меня есть следующие простые отношения:Почему django не удаляет отношения один к одному?

class User(models.Model): 
    fields here 

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 

я сделал следующее в оболочке:

user = User.objects.create(...) 
profile = UserProfile.objects.create(user=user) 
user.userprofile 
...<UserProfile: UserProfile object> 
user.userprofile.delete() 
...(1, {'accounts.UserProfile': 1}) 
user.userprofile 
...<UserProfile: UserProfile object> 

Из вышесказанного можно видеть, что я создаю пользователя и Userprofile экземпляров. Чем я пытаюсь удалить экземпляр UserProfile и он удаляется (по крайней мере, похоже). Чем я делаю user.userprofile, и он как будто никогда не был удален.

После небольшого перекопа в метод удаления Django я понял, что когда я делаю user.userprofile.delete() Django просто удаляет pk userprofile, а остальные поля не затрагиваются. То, что я не понимаю, что я должен сделать, чтобы получить следующий результат:

user.userprofile.delete() 
user.userprofile 
...RelatedObjectDoesNotExist: User has no userprofile. 

Кто-нибудь есть какие-то идеи или фрагменты кода?

ответ

3

Вы можете перезагрузить пользователя из базы данных:

user = User.objects.get(pk=user.pk) 

Это освежит все его атрибуты, включая UserProfile.