Я пытаюсь создать отношения, в которых сообщению в блоге может быть назначено любое количество тегов, а тег может быть связан с любым количеством сообщений в блоге. Я хотел бы иметь возможность использовать интерфейс администратора Django для назначения тегов сообщениям и назначения сообщений тегам.
Прямо сейчас, чтобы создать сообщение в блоге и назначить любое количество тегов, здесь это моя модель для сообщений:
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=100, unique=True, null=True, blank=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
updated_on = models.DateTimeField(auto_now=True)
tags = models.ManyToManyField("Tags", blank=True)
content = RichTextUploadingField()
created_on = models.DateTimeField(auto_now_add=True)
И модель, определяющая теги:
class Tag(models.Model):
name = models.CharField(max_length=20, unique=True)
Это работает. Я могу войти в интерфейс администратора и создать кучу объектов тегов, затем создать объект сообщения и назначить ему любое количество этих тегов.
Но, допустим, я тоже хочу сделать наоборот. Я хочу иметь возможность войти в интерфейс администратора, выбрать объект тега, а затем связать его с любым количеством объектов сообщений.
Я попытался сделать это, указав ManyToManyField
в Tag
Модель выглядит так:
class Tag(models.Model):
name = models.CharField(max_length=20, unique=True)
posts = models.ManyToManyField("Post", blank=True, related_name="posts")
Это показывает список сообщений на странице тега изменения, но я действительно хочу, чтобы он отображал только теги, связанные с этим сообщением. И, используя интерфейс администратора, я хотел бы иметь возможность выбирать другие теги для назначения этому сообщению. Затем я попытался использовать ForeignKey
, но это позволило мне выбрать только одно сообщение.
Я знаю, как я могу переопределить администратора по умолчанию ModelAdmin.change_form_template
с помощью отдельного запроса для отображения тегов, назначенных для сообщения. Но я не был уверен, есть ли способ сделать это без переопределения шаблона по умолчанию.
Изменить : Я пересмотрел этот вопрос, чтобы прояснить, чего я пытаюсь достичь. Теперь я считаю, что моя модель настроена правильно. Но я (вероятно, ошибочно) думал, что могу добавить другое поле ко второй модели, чтобы оно появилось в интерфейсе администратора.