Подтвердить что ты не робот

Как я могу использовать два внешних ключа для одной модели в Django?

Я хочу иметь два внешних ключа для одной и той же модели:

class Test(models.model):
    example1 = models.ForeignKey(Example)
    example2 = models.ForeignKey(Example)

Я получаю такие ошибки, как:

Аксессуар для полевых конфликтов 'example1' со связанными поле 'Example.test_set'. Добавить аргумент related_name к определению для "example1".

4b9b3361

Ответ 1

Django использует некоторую магию python для определения отношений между моделями, некоторые из которых связаны с использованием имени моделей в отношениях (где происходит "тест" в "test__set" ). Что происходит, я бы предположил, заключается в том, что он пытается поместить "test__set" в примерную модель дважды, один раз для каждого внешнего ключа, который вы определили.

Сообщение об ошибке предлагает что-то попробовать: определите аргумент related_name (переопределяя один из этих "test_set" ), который он может использовать вместо автоматического генерации двух конфликтующих имен.

Подробнее здесь

Ответ 2

Попробуйте использовать related_name:

class Test(models.model):
    example1 = models.ForeignKey('Example', related_name='example1')
    example2 = models.ForeignKey('Example', related_name='example2')

Ответ 3

Просто выполните то, что сообщает сообщение об ошибке, и если вы не знаете, что это значит, обратитесь к документации для related_name.