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

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

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

31. Поработаем с формами из модели. Создадим модели.

Давайте создадим две модели, что бы потом создать формы из моделей и проработаем то что часто используется.

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

32. Создаём формы из моделей, работаем в Jupyter Notebook.

Поработаем с Jupyter notebook, что бы лучше понять тонкости.

-

from django.db import models
from django import forms
from model_form.models import Author, Book
from django.forms import ModelForm

class AuthorForm(ModelForm):
    model = Author
    fields = ['name', 'title', 'birth_date']
    
    
class BookForm(ModelForm):
    model = Book
    fields = ['name', 'authors']

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

33. Добавим модели в админку.

Хотел, что бы Вы сами выполнили домашнее задание, а проделать вместе только в Jupyter Notebook,

боюсь, что упустите важное, давайте кое-что сделаем вместе.

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

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

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

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