據我所知Django使用contenttypes framework在管理員中執行日誌記錄。因此,您應該在模型中創建泛型關係,然後在管理中使用GenericTabularInline和GenericStackedInline顯示內聯。請諮詢文章。
from django.contrib import admin
from django.contrib.admin.models import LogEntry
from django.contrib.contenttypes.generic import GenericTabularInline
from django import forms
from some_app import models
from some_app.models import Item
class LogForm(forms.ModelForm):
class Meta:
model = LogEntry
class LogInline(GenericTabularInline):
ct_field = 'content_type'
ct_fk_field = 'object_id'
model = LogEntry
extra = 0
class ItemForm(forms.ModelForm):
class Meta:
model = Item
class ItemAdmin(admin.ModelAdmin):
form = ItemForm
inlines = [LogInline,]
admin.site.register(models.Item, ItemAdmin)
,並添加到項目:
class Item(models.Model):
name = models.CharField(max_length=100)
logs = generic.GenericRelation(LogEntry)
這種變化不會在數據庫中創建任何東西,所以沒有必要同步
很酷。我以前從未使用泛型關係。在我的情況下,那麼,你是否建議在我的模型中創建一個通用關係到logEntry對象? – 2011-12-22 19:23:46
我已經用例子更新了我的答案。希望這可以幫助。 – Ilya 2011-12-23 00:09:28
ahh感謝代碼示例。使事情更清晰。一些事情。 1st:我不想使用管理員。我想推出我自己的觀點和模板。 第二:這種方式給了我一個所有物品的清單,然後當看着一個特殊物品時,我看到了所有的日誌。我需要另一種方式。我需要一個日誌條目列表和每個項目的細節。這是相關的,因爲我執行的查詢是基於LogEntries,而不是項目。謝謝! – 2011-12-23 02:28:44