Я создаю блог, и я новичок в 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
Now В Slug модель slugable_type
будет содержать название модели (сообщение или категория), а slugable_id
- идентификатор этого объекта модели.
Таким образом, я хочу установить полиморфную связь (как я это делаю в Laravel) между Slug, Post и Model Model. Где каждый объект модели категории и поста будет иметь ровно один соответствующий объект слага.
Теперь я хочу создать слаг при создании поста или категории. Но не знаю, как зарегистрировать эти три модели в администрации Джанго.
Что касается встроенного администратора, должен быть определен внешний ключ, который в моем случае невозможен.
Обновлено
Причина, по которой я хочу это сделать, заключается в том, что не будет никакого общего слага для категории или сообщения. Например:
рассмотрим пост, в котором есть слаг «unique-slug-1». Так что не может быть категории с слагом 'unique-slug-1'.