OneToOne关系中的db_index和unique = True

时间:2013-02-07 13:11:00

标签: django django-sphinx

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

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User, _(u"User"))

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

1 个答案:

答案 0 :(得分:6)

按用户名搜索只会是:

UserProfile.objects.filter(user__username="dave")

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

class UserProfile(models.Model):
    user = models.OneToOneField(User)

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

正如cathy指出,models.OneToOneField暗示unique=True。 IIRC,这意味着Django将自动为该字段创建索引。 (如果想要索引,则需要明确设置db_index=False。)