@frilix
Иногда "творю"

Django: привязка категории?

Доброго времени суток! Недавно начал разбираться с Django, да и с Python в целом. Решил пойти путем практики. Сделал блог по видео-туториалам, но после хотелось дополнить блог категориями, удалось категории привязать статью, а это не то, что мне надо:

Models:
class Category(models.Model):
    class Meta:
        db_table = 'category'

    category_title = models.CharField(max_length=100, db_index=True)
    category_slug = models.SlugField(max_length=100, db_index=True)


class Article(models.Model):
    class Meta:
        db_table = 'article'

    article_title = models.CharField(max_length=200)
    article_text = models.TextField()
    article_date = models.DateTimeField()
    article_likes = models.IntegerField(default=0)
    article_category = models.ForeignKey(Category)


admin:
class ArticleInline(admin.StackedInline):
    model = Comments
    extra = 1


class ArticleToCategory(admin.StackedInline):
    model = Article
    extra = 1


class ArticleAdmin(admin.ModelAdmin):
    fields = ['article_title', 'article_text', 'article_date']
    inlines = [ArticleInline]
    list_filter = ['article_date']


class ArticleCategory(admin.ModelAdmin):
    inlines = [ArticleToCategory]


admin.site.register(Article, ArticleAdmin)
admin.site.register(Category, ArticleCategory)


Подскажите, как можно сделать, чтоб категорию выбирать из выпадающего списка? Буду премного благодарен.
  • Вопрос задан
  • 1599 просмотров
Решения вопроса 2
sim3x
@sim3x
не надо использовать db_table = - ето для натягивания джанго на уже существующую бд, структуру которой нельзя менять

Именование полей модели
class Article(models.Model):
    title = models.CharField(max_length=200)
    text = models.TextField()
    created = models.DateTimeField()
    likes = models.IntegerField(default=0)
    category = models.ForeignKey(Category)

    def __str__(self): return self.title


class ArticleAdmin(admin.ModelAdmin):
    fields = ['category', 'title', 'text', 'created']


Впринципе fields использовать стоит в редких случаях, оно по-умолчанию включает все поля модели

Чтоб не позволять пользователю редактировать поля лучше использовать
https://docs.djangoproject.com/en/1.9/ref/models/f...
likes = models.PositiveIntegerField(default=0, editable=False)
Ответ написан
@frilix Автор вопроса
Иногда "творю"
Разобрался: fields = ['article_title', 'article_text', 'article_date'] - здесь не было разрешено отображение этого поля
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы