Как поставить в качестве аргумента админ для двух разных типов контента

Я нуб Django и DB, но я работаю над сайтом, на котором есть и блоги, и статьи. Они созданы в админ в своих соответствующих полях, и в основном у меня есть класс "FeaturedPost"в model.py, где для одного из атрибутов" контент "я хочу иметь возможность выбирать из доступных блогов или статей.

Я знаю, что если я хочу отобразить содержимое в блоге, я бы сделал

models.ForeignKey(Blogs, related_name="w/e")

но как мне абстрагировать это, чтобы я мог выбрать из двух типов контента? Был бы GenericForeignKey быть полезным?

Я использую Fein-CMS, если это поможет с чем-то в этом случае.

1 ответ

Правильный, GenericForeignKey это то, что вам нужно. т.е.

from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType

class FeaturedPost(models.Model):
    ...
    content_type = models.ForeignKey(ContentType)
    content_object_id = models.PositiveIntegerField()
    content = GenericForeignKey('content_type', 'content_object_id')

Чтобы редактировать их в админе, вам нужно использовать общий встроенный

Другие вопросы по тегам