如下所示,我想在另一个(事件)的管理员更改视图中以TabularInline显示一个模型(考勤)。但是,出勤没有指向事件的直接ForeignKey。相反,它与注册具有OneToOne关系,后者又指向事件。有任何简单的方法可以达到这个目的吗?
从代码中可以看出,我尝试使用方法访问事件,并将其作为 fk_name 传递给TabularInline类,但它引发了错误说“'myapp.Attendance'没有名为'get_fk'的字段。
的myapp / models.py
from django.db import models
class Event(models.Model):
...
class Registration(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE)
...
class Attendance(models.Model):
registration = models.OneToOneField(Registration, primary_key=True, one_delete=models.CASCADE)
...
def get_fk(self):
return self.registration.event
的myapp / admin.py
from django.contrib import admin
class AttendanceInline(admin.TabularInline):
model = Attendance
fk_name = 'get_fk'
class EventAdmin(admin.ModelAdmin):
inlines = [AttendanceInline]
我目前的解决方法是将另一个“事件”ForeignKey添加到出勤,但这似乎是多余的,因为相同的数据已经存储在“注册”中。
如果有人可以提供帮助,请欣赏它!
答案 0 :(得分:0)
fk_name应该是根据文档而不是模型的任何属性具有Foreignkey关系的字段名称。