Найти - Пользователи
Полная версия: Два аналогичныйх ForeignKey в модели
Начало » Django » Два аналогичныйх ForeignKey в модели
1
wildDAlex
Здравствуйте!
Создаю модель.
from django.db import models

class Peoples(models.Model): # Режиссеры/Сценаристы
name = models.CharField(max_length=100)

class Movie(models.Model):
title = models.CharField(max_length=100)
director = models.ForeignKey(Peoples) # Режиссер
screenwriter = models.ForeignKey(Peoples) # Сценарист
Как видно, режиссеры и сценаристы связаны с одной таблицей “людей”.
При этом при проверке структуры модели python manage.py validate получаю ошибку.
python manage.py validate
Error: One or more models did not validate:
movies.movie: Accessor for field 'director' clashes with related field 'Peoples.
movie_set'. Add a related_name argument to the definition for 'director'.
movies.movie: Accessor for field 'screenwriter' clashes with related field 'Peop
les.movie_set'. Add a related_name argument to the definition for 'screenwriter'
.
Если директора или скринврайтера закомментить, то валидация проходит.
Не пойму, что он хочет, текст ошибки не совсем понял. Почему оно не дает ссылаться на одну таблицу дважды? Или есть более элегантное решение?
pill
Это заморочка с обратными связями
Как и подсказывает ошибка - назначьте им разные related_name, и все должно заработать.
director = models.ForeignKey(Peoples, related_name='directors')      # Режиссер
screenwriter = models.ForeignKey(Peoples, related_name='screenwriters')
https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name
wildDAlex
Спасибо, помогло.
Даже и не знал о существовании related_name, потому и не понял текст ошибки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB