django管理列表\显示SQL连接数据
由现有php组成的页面正在被更改为python和Django 现有查询django管理列表\显示SQL连接数据,django,django-models,django-admin,Django,Django Models,Django Admin,由现有php组成的页面正在被更改为python和Django 现有查询 Select l.lawyer_idx, l.lawyer_email, lp.lawyer_profile_path, lp.lawyer_profile_name, lc.lawyer_company_name, lc.lawyer_company_address, lc.lawyer_detail_address, l.lawyer_agent from
Select
l.lawyer_idx,
l.lawyer_email,
lp.lawyer_profile_path,
lp.lawyer_profile_name,
lc.lawyer_company_name,
lc.lawyer_company_address,
lc.lawyer_detail_address,
l.lawyer_agent
from lawyer l
left join lawyer_profile lp on l.lawyer_idx = lp.lawyer_idx
left join lawyer_company lc on l.lawyer_idx = lc.lawyer_idx
order by l.register_date desc;
我在models.py制作了每张桌子
models.py
class Lawyer(models.Model):
lawyer_idx = models.AutoField('ID', primary_key=True)
lawyer_email = models.CharField('E-mail', unique=True, max_length=200)
lawyer_agent = models.CharField(max_length=1, blank=True, null=True)
class Meta:
managed = False
db_table = 'lawyer'
class LawyerProfile(models.Model):
lawyer_idx = models.AutoField('ID', primary_key=True)
lawyer_profile_path = models.CharField(max_length=200, blank=True, null=True)
lawyer_profile_name = models.CharField(max_length=100, blank=True, null=True)
.................
class LawyerCompany(models.Model):
lawyer_idx = models.AutoField('ID', primary_key=True)
lawyer_company_name = models.CharField(max_length=100)
...............
我们希望将以下查询放入
Django Admin.py的list_display部分是否有任何方法显示加入sql的数据
Admin.py
from django.contrib import admin
from .models import Lawyer, LawyerCompany, LawyerProfile
@admin.register(Lawyer)
class LawyerAdmin(admin.ModelAdmin):
list_per_page = 100
**list_display = ['lawyer_idx', 'lawyer_email',
'lawyer_agent', 'lawyer_profile_path', 'lawyer_profile_name', 'lawyer_company_name']**
您可以将该查询添加为原始sql查询,但这并不能充分利用Django的ORM 您没有明确定义模型上的任何关系,因此Django不知道模型之间的关系 如果
lawyer\u idx
引用该律师,则可以将该字段更改为OneToOneField
/ForeignKey
(此处的AutoField
可能是错误的选择,因为值应与lawyer
模型中的值相对应,并且不会自动生成)。此外,还可以查看和关系的文档
class LawyerProfile(models.Model):
lawyer = models.OneToOneField(Lawyer, primary_key=True,
db_column="lawyer_idx", related_name="profile")
Django应该在访问相关数据时自动执行连接;在律师
实例上,您可以通过其相关名称
.profile
访问配置文件。在list\u display
选项中,您可以使用双下划线语法访问相关数据:
list_display = ['lawyer_idx','lawyer_agent', 'profile__lawyer_profile_path']
list_select_related = ['profile']
如果您添加Django,它将预先加入指定的表,因此在访问相关数据时不会执行额外的查询。您可以将该查询添加为原始sql查询,但这不会充分利用Django的ORM 您没有明确定义模型上的任何关系,因此Django不知道模型之间的关系 如果
lawyer\u idx
引用该律师,则可以将该字段更改为OneToOneField
/ForeignKey
(此处的AutoField
可能是错误的选择,因为值应与lawyer
模型中的值相对应,并且不会自动生成)。此外,还可以查看和关系的文档
class LawyerProfile(models.Model):
lawyer = models.OneToOneField(Lawyer, primary_key=True,
db_column="lawyer_idx", related_name="profile")
Django应该在访问相关数据时自动执行连接;在律师
实例上,您可以通过其相关名称
.profile
访问配置文件。在list\u display
选项中,您可以使用双下划线语法访问相关数据:
list_display = ['lawyer_idx','lawyer_agent', 'profile__lawyer_profile_path']
list_select_related = ['profile']
如果您添加Django,它将预先加入指定的表,因此在访问相关数据时不会执行其他查询。谢谢~!我有个问题。文件“C:\workspace\bhsn\models.py”,第603行,在LawyerProfile lawyer\u idx=models.OneToOneField(lawyer,primary\u key=True,db\u column='lawyer\u idx',related\u name='profile')类型错误:\uu init缺少1个必需的位置参数:“on\u delete'是的,您需要在\u delete=models.CASCADE上添加一个
。我尝试了这个!!!!!!model.py class LawyerCompany(models.model):lawyer\u idx=models.OneToOneField(lawyer,primary\u key=True,db\u column=“lawyer\u idx”,related\u name=“profile”,on\u delete='models.CASCADE')lawyer\u company\u name=models.CharField(max\u length=100)和admin.py->->list\u display=('lawyer\u idx',profile\u lawyer\u company\u company\u name'),但是!!!!!!!!!错误::(admin.E108)“list\u display[6]”的值指的是“profile\u lawyer\u company\u name”,它不是可调用的,“LawyerAdmin”的属性,也不是“bhsn.lawyer”上的属性或方法。很抱歉,我忽略了这似乎不适用于OneToOneField
,但您可以在这个问题上这样做,谢谢~!我有个问题。文件“C:\workspace\bhsn\models.py”,第603行,在LawyerProfile lawyer\u idx=models.OneToOneField(lawyer,primary\u key=True,db\u column='lawyer\u idx',related\u name='profile')类型错误:\uu init缺少1个必需的位置参数:“on\u delete'是的,您需要在\u delete=models.CASCADE上添加一个。我尝试了这个!!!!!!model.py class LawyerCompany(models.model):lawyer\u idx=models.OneToOneField(lawyer,primary\u key=True,db\u column=“lawyer\u idx”,related\u name=“profile”,on\u delete='models.CASCADE')lawyer\u company\u name=models.CharField(max\u length=100)和admin.py->->list\u display=('lawyer\u idx',profile\u lawyer\u company\u company\u name'),但是!!!!!!!!!错误::(admin.E108)“list\u display[6]”的值指的是“profile\u lawyer\u company\u name”,它不是可调用的、“LawyerAdmin”属性,也不是“bhsn.lawyer”上的属性或方法。很抱歉,我忽略了这似乎不适用于OneToOneField
,但您可以在这个问题中这样做