小编The*_*Hog的帖子

重写model.Manager方法后,Django无法删除单个对象

我试图在django manager(models.Manager)上重写get_by_natural_key方法.添加模型(NexchangeModel)后,我可以删除所有()对象,但单个 - 不能.

能够:

SmsToken.objects.all().delete()
Run Code Online (Sandbox Code Playgroud)

不能:

SmsTokent.objects.last().delete()
Run Code Online (Sandbox Code Playgroud)

码:

from django.db import models
from core.common.models import SoftDeletableModel, TimeStampedModel, UniqueFieldMixin

class NexchangeManager(models.Manager):
    def get_by_natural_key(self, param):
        qs = self.get_queryset()
        lookup = {qs.model.NATURAL_KEY: param}
        return self.get(**lookup)


class NexchangeModel(models.Model):
    class Meta:
        abstract = True
    objects = NexchangeManager()

class SmsToken(NexchangeModel, SoftDeletableModel, UniqueFieldMixin):
    sms_token = models.CharField(
        max_length=4, blank=True)
    user = models.ForeignKey(User, related_name='sms_token')
    send_count = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

python django django-models

7
推荐指数
2
解决办法
993
查看次数

标签 统计

django ×1

django-models ×1

python ×1