OneToOne关系中的db_index和unique = True

ole*_*ner 1 django django-sphinx

我正在扩展django的用户模型.

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User, _(u"User"))
Run Code Online (Sandbox Code Playgroud)

那么,是否可以在用户字段中使用db_index = True和unique = True?然后我需要通过用户名实现搜索.我想到了狮身人面像.有什么想法吗?也许有一些很好的教程链接?TIA

Mik*_*one 6

按用户名搜索只会是:

UserProfile.objects.filter(user__username="dave")
Run Code Online (Sandbox Code Playgroud)

另外,我不确定你的第二个参数应该做什么; 声明应如下:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
Run Code Online (Sandbox Code Playgroud)

所有额外的参数models.OneToOneField应该是关键字参数.

正如科西指出的那样models.OneToOneField暗示unique=True.IIRC,这意味着Django将自动为该字段创建索引.(db_index=False如果您想要索引,则需要显式设置.)