Django. Создание первой статьи (часть 8)

Создадим первую статью.

Для того чтобы исправить House object(название статьи), нужно в models.py создать метод __str__

def __str__(self):
    return self.house_name

Full Code:
class House(models.Model):
    house_name = models.CharField(«Название», max_length=200, default=»»)
    house_price = models.IntegerField(«Цена», default=0)
    house_description = models.TextField(«Описание», default=»»)

class Meta:
    verbose_name = «Дом»
    verbose_name_plural = «Дом»

def __str__(self):
    return self.house_name

Метод __str__ отвечает за имя объекта, в нашем случае за имя одного дома, мы также можем вернуть как какое либо поле модели, так и какую-нибудь форматированную строку

def __str__(self):
    return «Статья номер {}».format(self.id)

Добавим отображение дополнительных полей в админке

@admin.register(House)
class ArticleAdmin(admin.ModelAdmin):
    list_display = [«name», «price»]

Сейчас дома будут отображаются в том порядке, в котором мы их добавили, но хотелось бы их отсортировать, например по алфавиту, по цене, по дате

В файле models.py, в классе Meta добавим:

class Meta(object):
    ordering = [«name»]

Full code:
from django.db import models

# Create your models here.
class House(models.Model):
    house_name = models.CharField(«Название», max_length=200, default=»»)
    house_price = models.IntegerField(«Цена», default=0)
    house_description = models.TextField(«Описание», default=»»)

class Meta:
    verbose_name = «Дом»
    verbose_name_plural = «Дом»
    ordering = [«house_name», «house_price»]

def __str__(self):
    return self.house_name

Для настройки фильтрации данных статей используем list  и в admin.py добавим

list_filter = [«house_price»]

Full code:
from django.contrib import admin
from houses.models import House

@admin.register(House)
class AdminHouse(admin.ModelAdmin):
    list_display = [«house_name», «house_price»]
    list_filter = [«house_price»]

Автор: Vladimir Semenovich