我在Django中扩展了用户模型。
扩展用户的模型如下:
class Member(models.Model):
user_id = models.ForeignKey(to=User)
number = models.CharField(max_length=10)
match_code = models.CharField(max_length=50)
parent = models.ForeignKey("self", null=True, blank=True)
name = models.CharField(max_length=100)
address = models.CharField(max_length=255)
postcode = models.CharField(max_length=10)
city = models.CharField(max_length=100)
country = models.ForeignKey(to=Country, null=True)
language = models.ForeignKey(to=Language)
telephone = models.CharField(max_length=50)
mobile = models.CharField(max_length=50)
main_email = models.EmailField(null=True)
def __str__(self):
return self.name
现在我想检查用户是否存在来自User
表的电子邮件和来自Member
表的数字。
我该怎么做?
现在我按照以下方式执行此操作:
email = "some@email.com"
user = User.objects.get(email=email)
member = Member.objects.get(user_id=user.id)
因此,我从User表中获取第一个数据,然后从成员表中获取所有内容。
但是有更好的方法吗?
答案 0 :(得分:1)
如果你想要的话,你可以一次性获得会员:
Member.objects.get(user_id__email=email)
请注意,您的外键实际上应该只调用user
,而不是user_id
。
答案 1 :(得分:1)
以下将进行检查:
User.objects.filter(email=email, member__number=number).exists()
您可以通过以下方式检索这些成员:
Member.objects.get(user_id__email=email, number=number)
两件事:
ForeignKey
'user_id'
,将其称为'user'
。然后将自动创建字段user_id
。user
设为OneToOneField
答案 2 :(得分:0)
如果用户存在:
if User.objects.filter(email=email).exists():
member = Member.objects.get(user_id=User.objects.get(email=email).id)