Как исправить имя 'fieldname' не определено в django admin.py - PullRequest
0 голосов
/ 05 февраля 2019

Я работаю над приложением django, в котором у меня есть модель членов и другая модель, называемая обзорами.

Моя members модель

class Members(models.Model):
  TITLES = (('chairman', 'Chairman'), ('secretary', 'Secretary'),)
  user = models.OneToOneField(User, on_delete=models.CASCADE)
  title = models.CharField(max_length=10, choices=TITLES, default='secretary')
  active = BooleanField(default=False)

Моя reviews модель

class Reviews(models.Model):
  chairman = models.ForeignKey(Members, related_name='chairs', on_delete=models.PROTECT)
  secretary = models.ForeignKey(Members, related_name='secretaries', on_delete=models.PROTECT)
  review = models.TextField()

Может быть несколько председателей и секретарей, но во внешнем ключе выпадающий списокВ модели «Обзоры» я хотел бы отображать только те, которые являются активными (т.е. для активного поля установлено значение «Истина»).Я пытался добиться этого, имея в своем admin.py ...

class ReviewsAdmin(admin.ModelAdmin):
  ...
  def formfield_for_foreignkey(self, db_field, request, **kwargs):
    if db_field.name == "chairman":
      kwargs["queryset"] = Members.objects.filter(title=='chairman', active==True)
    elif db_field.name = "secretary":
      kwargs["queryset"] = Members.objects.filter(title=='secretary', active==True)
    return super().formfield_for_foreignkey(db_field, request, **kwargs)

admin.site.register(Reviews, ReviewsAdmin)

следующее: я получаю ошибку, name 'title' is not defined, где я делаю фильтр.Что здесь не так?

1 Ответ

0 голосов
/ 05 февраля 2019

Использовать только '=' внутри запроса.

if db_field.name == "chairman":
    kwargs["queryset"] = Members.objects.filter(title='chairman', active=True)
elif db_field.name = "secretary":
    kwargs["queryset"] = Members.objects.filter(title='secretary', active=True)
...