我有一个django模型如下
class MySubject(models.Model):
name=models.CharField(unique=True,max_length=50)
description=models.TextField(blank=True)
slug=models.SlugField(editable=False)
class Meta:
verbose_name_plural="MySubjects"
def __unicode__(self):
return self.name
def save(self,*args,**kwargs):
self.name=self.name.strip()
self.slug=slugify(self.name)
super(MySubject,self).save(*args,**kwargs)
@models.permalink
def get_absolute_url(self):
return ('subject_detail',(),{'slug':self.slug})
我需要使造物主+名字独一无二,这样我就可以调用了
^{pr2}$以下是正确的方法吗?在
class MySubject(models.Model):
name=models.CharField(max_length=50)
creator = models.ForeignKey(User,null=True)
description=models.TextField(blank=True)
slug=models.SlugField(editable=False)
class Meta:
verbose_name_plural="MySubjects"
unique_together = ('name', 'creator',)
...
我想我必须在做出改变后使用south
来做一个migration
。我是要单独做schemamigration
还是必须做datamigration
?在
添加唯一约束是模式迁移。但是,如果现有数据会导致完整性错误,则还需要进行数据迁移。在
如果您真的需要不区分大小写的唯一约束,则需要稍微复杂一点:
Case insensitive unique model fields in Django?
另请参见:https://code.djangoproject.com/ticket/14564
如果您总是将
get_or_create
与iexact一起使用,您可能会没事。但是,您不应该手动创建名为“foo”和“foo”的两个,因为这是允许的,然后您调用get_或_create将导致多个对象返回。。如果我想得对的话。在相关问题 更多 >
编程相关推荐