maxclax
@maxclax

Два ForeignKey в моделе, как реализовать?

Имею модель валют:

class Currencies(models.Model):
    name = models.CharField(verbose_name='Название', max_length=3, unique=True)


В ней будут следующие значения: EUR, USD, UAH и тому подобное.

Далее имеем модель для курсов валют по направлениям:

class Rates(models.Model):
    class Meta:
        # делает уникальным направление обмена
        unique_together = ("_from", "_to")

    # эталон
    _from = models.ForeignKey(Currencies, verbose_name='Эталон')

    # валюта
    _to = models.ForeignKey(Currencies, verbose_name='Валюта')

    rate = models.FloatField(verbose_name='Курс')


Собственно в админке ожидаю получить выбор направления обмена (к примеру USD на UAH) и указать курс по данном направлении.

Но меня ругает интерпретатор:
ERRORS:
currencies.Rates._from: (fields.E304) Reverse accessor for 'Rates._from' clashes with reverse accessor for 'Rates._to'.
	HINT: Add or change a related_name argument to the definition for 'Rates._from' or 'Rates._to'.
currencies.Rates._to: (fields.E304) Reverse accessor for 'Rates._to' clashes with reverse accessor for 'Rates._from'.
	HINT: Add or change a related_name argument to the definition for 'Rates._to' or 'Rates._from'.


В ругани речь об обратной связи идет, но мне она по сути не нужна. Как быть?
  • Вопрос задан
  • 6745 просмотров
Решения вопроса 1
mututunus
@mututunus
Backend developer (Python, Golang)
class Rates(models.Model):
    class Meta:
        # делает уникальным направление обмена
        unique_together = ("_from", "_to")

    # эталон
    _from = models.ForeignKey(Currencies, verbose_name='Эталон', related_name="rates_from")

    # валюта
    _to = models.ForeignKey(Currencies, verbose_name='Валюта', related_name="rates_to")

    rate = models.FloatField(verbose_name='Курс')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы