Django管理TabularInline - 获得通过OneToOne关系
问题描述:
外键如下图所示,我要显示在另一个(事件)作为TabularInline的管理员更改视图一个模型(出席)。但是,出勤没有指向事件的直接ForeignKey。相反,它与注册有一对一的关系,而这又转向事件。任何简单的方法来实现这一点?Django管理TabularInline - 获得通过OneToOne关系
正如你可以从代码中看到,我试图用一种方法来访问事件,并把它传递到TabularInline类为FK_NAME,但它抛出一个错误说“‘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的增加出席,但它似乎是多余的,因为相同的数据已经存储在'注册'内。
如果有人可以帮忙,请欣赏它!
答
fk_name应该是根据文档没有Foreignkey关系的字段名称而不是模型的任何属性。
感谢您的回答。我知道fk_name应该是一个字段,但在我的情况下,我该怎么做才能指向self.registration.event? – lsh