外鍵如下圖所示,我要顯示在另一個(事件)作爲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應該是一個字段,但在我的情況下,我該怎麼做才能指向self.registration.event? – lsh