【发布时间】:2018-10-09 20:52:24
【问题描述】:
我正在创建一个博客,我是 Django 的初学者。我有三个模型 Slug、Post、Category。
class Slug(models.Model):
slugable_type = models.CharField(max_length=32)
slugable_id = models.IntegerField()
slug = models.CharField(max_length=127)
class Category(models.Model):
name = models.CharField(max_length=255)
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
parent = models.ForeignKey('Category', on_delete=models.CASCADE)
def __str__(self):
return self.title
class Post(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
title = models.CharField(max_length=255)
content = models.TextField()
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
def __str__(self):
return self.title
现在在 Slug 中,模型 slugable_type 将包含模型名称(帖子或类别),slugable_id 是该模型对象的 ID。
通过这种方式,我想在 Slug、Post 和 Category Model 之间建立一个多态关系(就像我在 Laravel 中所做的那样)。 Category 和 Post 模型的每个对象都将有一个对应的 Slug 对象。
现在我想在创建帖子或类别时创建一个 slug。但是不知道如何在Django管理中注册这三个模型。
要让管理员内联,必须定义一个外键,这在我的情况下是不可能的。
更新
我想这样做的原因是类别或帖子不会有任何常见的slug。例如: 考虑一个有 slug 'unique-slug-1' 的帖子。所以不能有一个带有 slug 'unique-slug-1' 的类别。
【问题讨论】:
标签: django django-models django-admin