开发者

Delete manytomanyfield in Django

I have the following models

class Database(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)


class DatabaseUser(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100)
    password = models.CharField(max_lengt开发者_如何学JAVAh=100)
    database = models.ManyToManyField(Database)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

One DatabaseUser can have many Databases under it's control.

The issue I have if I go to delete a Database it wants to Delete the DatabaseUser also.. Is there a way to stop this from happening easily?


It's not clear why you have the multiple fks to User, but that aside you need to unhook the relationship between the Database and any DatabaseUsers

for db_user in yourdatabase.databaseuser_set.all(): #for all users who are linked to the DB you're about to kill
  db_user.database.remove(yourdatabase) #unhook the m2m

yourdatabase.delete()

[edit was typo fix]

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜