擅长:python、mysql、java
<p>解决方案是使用django信号:</p>
<pre><code>import uuid
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.db.models.signals import pre_save
from django.dispatch import receiver
class Uuidable(models.Model):
uuid = models.CharField(_('uuid'), blank=True,
null=False, unique=True,
max_length=64, default=uuid.uuid4())
class Meta:
abstract = True
@receiver(pre_save)
def set_uuid_on_save(sender, instance, *args, **kwargs):
if instance.pk is None:
instance.uuid = uuid.uuid4()
</code></pre>
<p>这样,无论以何种方式创建模型(通过shell、fixture等等),都会填充模型/数据。在</p>