Django-tables2模型主键定义疑问及Patient.pk值错误求助
嘿,我来帮你搞定这两个问题:
关于Django-tables2中模型主键的疑问
首先明确一点:在Django里,如果你没手动给模型指定主键字段,框架会自动生成一个名为id的自增整数主键,这个主键会被django-tables2自动识别和使用,完全不需要额外配置。
只有当你在模型里显式定义了自定义主键(比如写了patient_id = models.AutoField(primary_key=True))时,才需要在table的配置里对应使用这个自定义的主键字段名。
解决“解析访问器Patient.pk时未能找到键[Patient]”的错误
这个错误的根源在于你linkify里的访问器写法错了。
在django-tables2的上下文中,表格的每一行对应的都是一个Patient实例,所以访问器是针对这个实例来查找属性的——你只需要写"pk"就行,根本不需要加Patient.前缀!你写tables.A("Patient.pk")相当于告诉框架去当前实例里找名为Patient的属性,这显然不存在,所以才会报错。
修正后的tables.py代码应该是这样的:
class PatientTable(tables.Table): FirstName = tables.Column(linkify=("PatientDetailView", {"pk": tables.A("pk")})) LastName = tables.Column(linkify=("PatientDetailView", {"pk": tables.A("pk")})) Telephone_no = tables.Column(linkify=("PatientDetailView", {"pk": tables.A("pk")})) class Meta: model = Patient # attrs = {'class': 'table table-striped table-hover'} exclude = ("user", "Notes", "Address") template_name = 'django_tables2/bootstrap4.html'
替换之后,这个值错误应该就能消失了,表格里的字段也能正确跳转到对应的详情页啦。
内容的提问来源于stack exchange,提问作者user11671655
相关产品推荐
相关产品推荐

