2017-02-10 83 views
0

我在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 = "[email protected]" 
user = User.objects.get(email=email) 
member = Member.objects.get(user_id=user.id) 

因此我从用户表第一数据,然后我得到的一切,从成员表。

但是有没有更好的方法?

回答

1

下面将做检查:

Member.objects.get(user_id__email=email, number=number) 

两件事情:

User.objects.filter(email=email, member__number=number).exists() 

您可以通过检索这些成员

  • 请勿致电ForeignKey'user_id',叫它'user'。随后将自动创建user_id字段。
  • 如果不应该有多个成员每个用户,使user a OneToOneField
0

如果用户存在:

if User.objects.filter(email=email).exists(): 
    member = Member.objects.get(user_id=User.objects.get(email=email).id) 
1

你可以得到成员一气呵成,如果这就是你想要的东西:

Member.objects.get(user_id__email=email) 

请注意,您的外键真的应该叫刚user,不user_id