Python django orm:使用一个基础模型连接两个模型
我有3个型号Python django orm:使用一个基础模型连接两个模型,python,django,orm,Python,Django,Orm,我有3个型号auth user作为我的基本型号,另外2个型号的外键为auth user。现在我想合并所有三个表,并创建一个对象,从合并的三个表中获取所有数据 class AuthUser(models.Model): password = models.CharField(max_length=128) last_login = models.DateTimeField(blank=True, null=True) is_superuser = models.Intege
auth user
作为我的基本型号,另外2个型号的外键为auth user
。现在我想合并所有三个表,并创建一个对象,从合并的三个表中获取所有数据
class AuthUser(models.Model):
password = models.CharField(max_length=128)
last_login = models.DateTimeField(blank=True, null=True)
is_superuser = models.IntegerField()
username = models.CharField(unique=True, max_length=150)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=150)
email = models.CharField(max_length=254)
is_staff = models.IntegerField()
is_active = models.IntegerField()
date_joined = models.DateTimeField()
class Meta:
managed = False
db_table = 'auth_user'
class employees(models.Model):
employee_name = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True, to_field='username')
department = models.CharField(max_length=100)
dob = models.DateField()
doj = models.DateField()
blood_grp = models.CharField(max_length=100, null=True)
father_name = models.CharField(max_length=100, null=True)
add1 = models.CharField(max_length=100, null=True)
add2 = models.CharField(max_length=100, null=True)
# doj = models.ImageField(upload_to='profile_pics', blank=True)
con_relation = models.CharField(max_length=100)
# email_id = models.EmailField(max_length=254, blank=True, null=True)
webmail_id = models.CharField(max_length=100, blank=True, null=True)
emergency_mob = models.CharField(max_length=100)
contact_person = models.CharField(max_length=100, blank=True, null=True)
biometric = models.CharField(max_length=100, blank=True, null=True)
biometric_id = models.CharField(max_length=100, blank=True, null=True)
offer_letter = models.CharField(max_length=100, blank=True, null=True)
team_leader = models.CharField(max_length=100)
manager = models.CharField(max_length=100, blank=True, null=True)
employment_status = models.CharField(max_length=100, blank=True, null=True)
company_id = models.CharField(max_length=100)
adhar_id = models.CharField(max_length=100, blank=True, null=True)
pan = models.CharField(max_length=100, null=True)
class auth_ext(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True, to_field='username')
emp_code= models.CharField(max_length=100,unique=True,default=True)
is_role = models.CharField(max_length=100)
is_designation = models.CharField(max_length=100)
profile_image = models.ImageField(upload_to='profile_pics', blank=True)
mobile_no = models.CharField(max_length=100)
# add_skill = models.CharField(max_length=100, blank=True, null=True)
class meta(object):
"""docstring for meta"""
def __init__(self, arg):
super(meta, self).__init__()
self.arg = arg
视图.py
def Employees(request):
# emp = employees.objects.all()
emp = employees.objects.select_related()
# return render('hr/employees.html', locals(), context_instance=RequestContext(request))
# emppp = employees.objects.select_related().filter(foreign_record__foreign_attribute__gt=foo)
return render(request, 'hr/employees.html',{'emp':emp})
{% for emp in emp %}
<tr>
<td>
<a href="" class="avatar">J</a>
<h2><a href="">John Doe <span>Web Designer</span></a></h2>
</td>
<td>{{emp.dob}}</td>
<td>{{emp.User.email}}</td>
<td>9876543210</td>
<td><button class="btn btn-xs btn-primary" value="Web Developer">Web Developer</button></td>
hr/employees.html
def Employees(request):
# emp = employees.objects.all()
emp = employees.objects.select_related()
# return render('hr/employees.html', locals(), context_instance=RequestContext(request))
# emppp = employees.objects.select_related().filter(foreign_record__foreign_attribute__gt=foo)
return render(request, 'hr/employees.html',{'emp':emp})
{% for emp in emp %}
<tr>
<td>
<a href="" class="avatar">J</a>
<h2><a href="">John Doe <span>Web Designer</span></a></h2>
</td>
<td>{{emp.dob}}</td>
<td>{{emp.User.email}}</td>
<td>9876543210</td>
<td><button class="btn btn-xs btn-primary" value="Web Developer">Web Developer</button></td>
{emp%中的emp为%emp}
{{emp.dob}}
{{emp.User.email}
9876543210
网络开发者
auth\u ext的用户在这里,我并不清楚。您将员工
链接到用户
(使用一个字段员工姓名
,这并不是一个好主意),这样您就可以在模板中获得带有{{emp.Employee\u name.email}
的员工电子邮件,不要对循环变量使用与正在循环的集合相同的名称。您的auth\u ext
模型是否类似于用户配置文件?名称很混乱。我本可以只创建两个表并连接它,即,auth_user和auth_ext。我本可以删除员工模型并将其插入auth_ext模型本身。但我希望将其隔离在该表本身的特定细节中,因此我在这里使用了3个表,其中员工表和auth_ext表具有来自auth_user表的相同外键。现在,我应该合并所有三个表并获取员工的数据。