对于帐户的简单激活 key ,我必须从随机数创建 key ,同时确保我没有使用与另一个帐户相同的 key 。现在,这就是我所拥有的:
def get_random_word():
word = ''
i = 0
while i in range(10) and User.objects.filter(activation_key = word).exists():
word += random.choice('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789')
i+=1
return word
我现在意识到的问题是,我使用 django 的内置 User
类和这样的用户配置文件:
def create_user_info(sender, instance, created, **kwargs):
if created:
UserInfo.objects.create(user=instance)
post_save.connect(create_user_info, sender=User)
class UserInfo(models.Model):
user = models.OneToOneField(User)
pen_name = models.CharField(max_length=30)
activated = models.BooleanField()
activation_key = models.CharField(max_length=40)
def __unicode__(self):
return self.email + '-' + self.pen_name
我需要按用户个人资料进行过滤。因此,简而言之,我如何按键或更具体地说,按用户个人资料进行过滤。
最佳答案
首先,将 related_name 添加到您的用户信息中:
class UserInfo(models.Model):
user = models.OneToOneField(User, related_name='profile')
...
https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name
然后你可以这样做:
User.objects.filter(profile__activation_key=word).exists()
希望对你有帮助:)
关于python - Django:按用户配置文件或外键过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856519/