Django. Вибір багатьох записів. Категорії. Товари. Адмінка.

Створення адмінки під модель app/admin.py.

from django.contrib import admin

from page.models import Page

class PageAdmin(admin.ModelAdmin):
    pass
admin.site.register(Page, PageAdmin)

Як вибрати всі записи з вьюшки.

pages = Page.objects.all()
return render(request,'index.html',{"pages": pages})

Як пройти за списком у шаблоні.

{% for i in pages %}

{{ i.title }}

Створення моделі каталогу.

 class Catalog(models.Model):
     name = models.CharField(max_length=250)

Адмінка.

class CatalogAdmin(admin.ModelAdmin):
    pass
admin.site.register(Catalog, CatalogAdmin)

Створення команди завантаження тестових даних load_data.py.

from django.core.management.base import BaseCommand, CommandError

from page.models import Catalog

lst = ['Car', 'Funiture', 'Food', 'Clothes']


class Command(BaseCommand):

    def handle(self, *args, **options):
       print('Loading catalog!!')
       for i in lst:
           c = Catalog()
           c.name = i
           c.save()

Перевизначимо метод str

class Catalog(models.Model):
    name = models.CharField(max_length=250)

    def __str__(self):
        return self.name

Зв’язка одним-багатьом.

class Catalog(models.Model):
    name = models.CharField(max_length=250)

    def __str__(self):
        return self.name


class Product(models.Model):
    name = models.CharField(max_length=250)
    content = models.TextField()
    catalog = models.ForeignKey(Catalog,on_delete=models.CASCADE, default='', blank=True, null=True)

    def __str__(self):
        return self.name

Кастомізація адмінки.

class ProductAdmin(admin.ModelAdmin):
    list_display = ['name', 'catalog']
    list_filter = ['catalog']
admin.site.register(Product, ProductAdmin)