Pracuję na panelu admina w django. Mam taki kod:

  1. class CommentForm(forms.ModelForm):
  2. categories = forms.ModelChoiceField(queryset = Category.objects.all(), required = False)
  3.  
  4. class CommentAdmin(admin.ModelAdmin):
  5. form = CommentForm


Zapisuję komentarz, do bazy trafia informacja jakiej kategorii dotyczy. Jak do cholery przy edycji tego komentarza mogę wyciągnąć tą informację. Wiem, że do pola categories muszę przypisać wartość initial i wszystko pójdzie gładko, ale nie mogę tego zrobić w CommentForm przy inicjalizacji tego pola, bo tam jeszcze nie wiem jaki jest id kategorii. Próbuję więc zrobić to w CommentAdminie przesłaniając __init__:

  1. def __init__(self, *args, **kwargs):
  2. #tak
  3. self.form.initial = {'categories' : 1}
  4. #albo tak
  5. self.form.categories.initial = {'categories' : 1}
  6.  
  7. super(CommentAdmin, self).__init__(*args, **kwargs)


W pierwszym wypadku nic się nie zmienia, w drugim dostaję błąd type object 'CommentForm' has no attribute 'categories'. Jak więc w takim razie mogę osiągnąć cel?
Zachciało mi się pythona k***a...