Django: добавить ForeignKey limit_choices_, чтобы связать другой или тот же экземпляр модели - PullRequest
0 голосов
/ 21 сентября 2018

Это мой код.

std_name = models.ForeignKey(
StudentInfo, on_delete=models.CASCADE)

def get_std_class_name(self):
   return int(self.std_name.std_subject_class.std_class_name_N)

def limit_subject_std_choices():
   return {'std_subject_class__std_class_name_N':'get_std_class_name' }

subject_name = models.ForeignKey(StdSubject,on_delete=models.CASCADE, limit_choices_to=limit_subject_std_choices)

Но показывает ошибку. ValueError в / admin / results / studentinfo / 1 / change / неверный литерал для int () с основанием 10: 'get_std_class_name'

Я не знаю, что является проблемой с моим кодом.Я хочу, чтобы кто-нибудь из учеников поставил ей оценку по какому-либо предмету, в то время как предмет будет показан по названию ее класса.Просто я хочу получить информацию о классе ученика из этого экземпляра модели и передать значение в этой функции.

def limit_subject_std_choices():
       return {'std_subject_class__std_class_name_N':'get_std_class_name'}

1 Ответ

0 голосов
/ 21 сентября 2018

Из Django doc limit_choices_to значение должно быть dict с выражением key и значением dict value

В вашем случае вы пытаетесь найти значения для каждого экземпляра в вашей модели , что невозможно .

Тогда что возможно в вашем случае?

std_subject_class__std_class_name_N, ожидающее значение PK, (целочисленное значение), поэтому вы должны передать допустимое целое число как

subject_name = models.ForeignKey(StdSubject, on_delete=models.CASCADE,
                                 limit_choices_to=<b>{'std_subject_class__std_class_name_N': 123}</b>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...