Здравствуйте!
Мне необходимо создать две модели, скажем это "Справочник" и "Элемент справочника". Следуя книге Дронова "Django 3.0" я связываю модели и создаю редактор в файле admin.
Код с файла models:
from django.db import models
class Handbook(models.Model):
title = models.CharField('Наименование', max_length=250, db_index=True)
short_title = models.CharField('Короткое наименование', max_length=100)
description = models.TextField('Описание')
version = models.CharField('Версия', max_length=250) #unique=True
date = models.DateField('Дата начала действия справочника этой версии')
def __str__(self):
return self.title
class Meta:
verbose_name = 'Справочник'
verbose_name_plural = 'Справочники'
class Element(models.Model):
r_id = models.ForeignKey(Handbook, on_delete=models.PROTECT, name='Родительский идентификатор')
code = models.CharField('Код элемента', max_length=250)
value = models.CharField('Значение элемента', max_length=250)
def __str__(self):
return self.value
class Meta:
verbose_name = 'Элемент'
verbose_name_plural = 'Элементы'
Код с файла admin:
from django.contrib import admin
from .models import Handbook, Element
class ElementAdmin(admin.ModelAdmin):
list_display = ('code', 'value', 'r_id')
list_display_links = ('code', 'value')
search_fields = ('code', 'value')
admin.site.register(Handbook)
admin.site.register(Element, ElementAdmin)
При запуска миграций я получаю сообщение об ошибке:
r_id = models.ForeignKey(Handbook.__str__(), on_delete=models.PROTECT, name='Родительский идентификатор')
TypeError: __str__() missing 1 required positional argument: 'self'
(venv) D:\PythonProject\DjangoProject\komtek_test\komtek>manage.py makemigrations
SystemCheckError: System check identified some issues:
ERRORS:
: (admin.E108) The value of 'list_display[2]' refers to 'r_id', which is not
a callable, an attribute of 'ElementAdmin', or an attribute or method on 'handbook.Element'.
Подскажите будьте добры, что я делаю не правильно? Мне необходимо сделать это, чтобы в последующем реализовать вывод на странице элементов, относящихся к определенному справочнику.
Так же, как я понимаю, в панели администратора Django, в перечислении всех элементов, должна выводится строка "родительский идентификатор" - где будет указано к какому справочнику принадлежит определенный элемент.
В книге дронов на примере выводит объявления, относящиеся к определенной рубрике.
Спасибо!