我试图在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)