我有以下django模型:
客户:
class Customer(BaseModel):
"""
Represents company
"""
company_name = models.CharField(_("Company name"), max_length=128)
配置文件:
class Profile(BaseModel):
"""
Model used to extend builtin user information
"""
user = models.OneToOneField(User)
和 ProfilePermission ,用于存储有关访问级别的m2m信息(每个配置文件可以访问具有不同访问级别的多个客户)。
class ProfilePermission(BaseModel):
"""
M2M model used to assign a users (profiles) to the customers
"""
profile = models.ForeignKey(Profile, blank=True, null=True, on_delete=models.SET_NULL)
customer = models.ForeignKey(Customer, blank=True, null=True, on_delete=models.SET_NULL)
access_level = models.CharField(_("Access level"),max_length=16,
choices=ACCESS_LEVELS, default="admin")
当我尝试删除 ProfilePermission 实例(使用.delete()
方法)时出现问题。它工作正常 - 删除ProfilePermission而不触及它的外键字段 - 客户和个人资料。
然而,当具有Profile
外键的用户登录时,魔术开始。
当他登录时,我正在尝试删除 ProfilePermission django也希望删除相关的个人资料和客户。< / p>
非常奇怪。它在django bultin管理应用程序和我们的自定义仪表板中都表现出来。有什么想法吗?