我在 Django 1.5 中设置了一个自引用模型,如下所示:
RELATIONSHIP_PARENT = 1
RELATIONSHIP_BLOCKED = 2
RELATIONSHIP_STATUSES = (
(RELATIONSHIP_PARENT, 'Parent'),
(RELATIONSHIP_BLOCKED, 'Blocked'),
)
class Message(models.Model):
content = models.CharField("Content", max_length=160, db_index=True)
relationships = models.ManyToManyField('self',
through='Relationship',
symmetrical=False,
related_name='related_to')
class Relationship(models.Model):
parent_message = models.ForeignKey(Message, related_name='parent_messages')
child_message = models.ForeignKey(Message, related_name='child_messages')
status = models.IntegerField(choices=RELATIONSHIP_STATUSES)
这是受到帖子http://charlesleifer.com/blog/self-referencing-many-many-through的启发,他在其中描述了“不对称关系 - Twitter 模型”(我的目标是在消息之间创建父子关系,但是这可能是与这个问题无关的信息)。我试图配置 Django 管理页面以在部分Relationship
下显示信息Message
。我尝试遵循我似乎是 Django 文档中最接近的示例,如下所示
from django.contrib import admin
from demo.models import Message, Relationship
class RelationshipInline(admin.TabularInline):
model = Relationship
extra = 1
class MessageAdmin(admin.ModelAdmin):
inlines = (RelationshipInline,)
admin.site.register(Message, MessageAdmin)
admin.site.register(Relationship)
但我收到如下错误:
Exception at /admin/
<class 'demo.models.Relationship'> has more than 1 ForeignKey to <class 'demo.models.Message'>
我知道我的案例与 Django 文档的示例略有不同,因为我有一个自引用模型。我想知道是否有一种方法可以通过管理控制台在一个视图/页面中显示特定消息的关系(比如当前的孩子和父母)。如果是这样,有人可以告诉我怎么做吗?我是 Django 新手,还在学习,如果这个问题太天真,请道歉。谢谢你。