№1 Практическая онлайн-школа обучения языкам программирования Python (Django), JavaScript, Kotlin В. Бовсуновского.

Специальная, подарочная акция получения доступа к Django4!

Как, я, начал код писать в Python? Смотрите, если уперлись и ничего не получается.

34. Покажу фичу, как, при использовании ManyToManyField(), отобразить данные с другой модели в админ

У нас есть 2 модели, да ещё и с выборкой.

# -*- coding: utf-8 -*-
from django.db import models
TITLE_CHOICES = [
    ('MR', 'Mr.'),
    ('MRS', 'Mrs.'),
    ('MS', 'Ms.'),
]
class Author(models.Model):
    name = models.CharField(max_length=100)
    .......



class Book(models.Model):
    ..........
    authors = models.ManyToManyField(Author)

Eсли мы попытаемся в админке отобразить - authors = models.ManyToManyField(Author) - получим исключение, Джанго скажет что ManyToManyField это отношения, а не конкретное поле.

@admin.register(Book)
class BookOrderAdmin(admin.ModelAdmin):
 #fields =  ['name', 'authors']
    `list_display = ['name', 'authors']`

ERRORS:

<class 'model_form.admin.BookOrderAdmin'>: (admin.E109) The value of 'list_display[1]' must not be a ManyToManyField.

Нам нужно вытянуть поле с именем с модели Author.

class Author(models.Model):
    name = models.CharField(max_length=100)
    ......

Тогда все получится.

ManyToManyField..png

Давайте разбираться.

Перейти к уроку

35. Для создания формы используем низкоуровневое API, для создания форм.

Это Джанго делает автоматом, но мы можем взять процесс в свои руки и добавить больше информации, что бы контролировать весь процесс.

models.png

Перейти к уроку