Django ForeignKey - PullRequest
       11

Django ForeignKey

0 голосов
/ 10 марта 2019

Я пытаюсь сделать обратный поиск через оболочку для внешнего ключа

models.py:

class Investor(models.Model):
 first_name = models.CharField(max_length = 100)
 last_name = models.CharField(max_length = 100)

 def __str__ (self):
    return '%s %s' % (self.first_name, self.last_name)

class Investment(models.Model):
 investor = models.ForeignKey(Investor, on_delete=models.CASCADE)
 feeder = models.ForeignKey(Fund, on_delete=models.CASCADE)   
 amount = models.DecimalField(max_digits=20, decimal_places=2, default="1")

 def __str__ (self):
    return self.investor

class Fund(models.Model):
 feeder = models.CharField(max_length=100)

 def __str__ (self):
    return  self.feeder

Если я войду в оболочку:

a = Investment.objects.get(pk=1)
a.investor.first_name -> this works 

С другой стороны:

b = Investor.objects.get(pk=1)
b.investment doesn't work... 
b.investor doesn't work
b.investment.feeder neither.. 

Всегда получал ошибку "Инвестор не приписал" .... "-> Как я могу искать обратные отношения?Спасибо !!

1 Ответ

1 голос
/ 10 марта 2019

Внешний ключ - это отношение один-ко-многим, а не один-к-одному.Здесь у Инвестиции есть один Инвестор, но у Инвестора есть много Инвестиций.Таким образом, от вашего Инвестора вам нужно использовать обратную связь, которая по умолчанию оканчивается на set, и является менеджером:

b.investment_set.all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...