[英]Delete Objects after Saving - Django
保存Django后,我有一個關於刪除對象的問題,我有以下模型:
class Reaction(models.Model):
REACT_TYPES = (
(LIKE, 'Like'),
(LOVE, 'Love'),
)
user = models.ForeignKey(User)
react_type = models.CharField(max_length=100, choices=REACT_TYPES, default='LIKE')
我該怎么寫save()
:保存時,它應該使用THE SAME用戶和react_type刪除可用的對象,或者如果對象不存在則創建一個對象。
def save(self, force_insert=False, force_update=False, *args, **kwargs):
user = Reaction.objects.filter(user=self.user)
react_type = Reaction.objects.filter(user=self.react_type)
# Model delete if exist
if self.id.exists() & self.react_type.exists() :
self.Reaction.delete()
# Model create if not exist
else :
self.Reaction.create()
使用@dirkgroten解決方案修復:
class ReactionManager(models.Manager):
def save(self, force_insert=False, force_update=False, *args, **kwargs):
similars = Reaction.objects.filter(user=self.user, react_type=self.react_type)
if similars.exists():
print ('exist')
similars.delete()
else:
print ('Not exist')
similars.create()
super(Reaction, self).save(*args, **kwargs)
請檢查此代碼。 它可以幫助您:
def save(self, force_insert=False, force_update=False, *args, **kwargs):
similars, created = Reaction.objects.get_or_create(user=self.user, react_type=self.react_type)
if not created:
print ('exist')
similars.delete()
super(Reaction, self).save(*args, **kwargs)
此代碼可以正常工作。
def save(self, force_insert=False, force_update=False, *args, **kwargs):
similars = Reaction.objects.filter(user=self.user, content_type=self.content_type, object_id=self.object_id)
if similars.exists():
similars.delete()
similars.update(user=self.user, react_type=self.react_type)
else :
similars.update(user=self.user, react_type=self.react_type)
super(Reaction, self).save(*args, **kwargs)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.