Django Модель, Многозначность / Область администратора - PullRequest
0 голосов
/ 17 апреля 2020

у меня начало fre sh с Django. Я создаю блог, и мне нужна подсказка сейчас. Я хочу добавить теги к своим сообщениям. Поэтому я создал модель для своих тегов:

class Tag(models.Model):
    name = models.CharField(max_length=200, unique=True)

    def __str__(self):
        return self.name

Это моя модель сообщения

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
    updated_on = models.DateTimeField(auto_now= True)
    content = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)

    class Meta:
        ordering = ['-created_on']

    def __str__(self):
        return self.title

Каков наилучший способ, который пользователь может выбрать в тегах области администратора для опубликовать и более одного или создать новый тег?

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Вы ищете InlineModelAdmin особый раздел, касающийся Работа со многими ко многим моделям

что-то вроде следующего:

class TagInline(admin.TabularInline):
    model = Post.tags.through

class PostAdmin(admin.ModelAdmin):
    inlines = [
        TagInline,
    ]

Кроме того, у вас отсутствуют отношения в вашей модели, которые должны быть ManyToMany

class Post(models.Model):
    ...
    tags = models.ManyToManyField(Tag)
0 голосов
/ 17 апреля 2020

В классе Post , добавьте поле ManyToMany

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
    updated_on = models.DateTimeField(auto_now= True)
    content = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)
    tag = models.ManyToManyField(Tag)

    class Meta:
        ordering = ['-created_on']

    def __str__(self):
        return self.title
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...