Django Model object.all() для ModelChoiceField и ModelMultipleChoiceField
У меня есть модель TransactionCategory, и я хочу использовать ее для отображения ModelMultipleChoiceField и ModelChoiceField в форме django.
model.py
class TransactionCategory(models.Model):
"""
Transaction Category database model
"""
txn_category = models.CharField("Transaction Category", max_length=50, null=True, default=None, blank=True)
def __str__(self):
"""
Transaction Category
Returns:
transaction category : str
"""
return f"{self.pk} ({self.txn_category})"
class Meta:
verbose_name = "Transaction Category"
db_table = "txn_category"
forms.py
queryset заполняет элемент управления MultipleChoiceField, используя "id" в качестве значения и "txn_category" в качестве текста perfectly.
class TxnCategoryDetailModelForm(forms.ModelForm):
txn_description = forms.ModelMultipleChoiceField(label="Transaction Description", queryset=CreditCardTxnDescription.objects.all().order_by("description"), required=False, widget=forms.CheckboxSelectMultiple)
class Meta:
model = TransactionCategory
fields = ["txn_category"]
Не работает с ModelChoiceField (выпадающее поле), кверисет правильно заполняет id, но текст показывает "id (txn_category)", например, "1 (еда)"
class TxnDescriptionTagsModelForm(forms.ModelForm):
description = forms.CharField(widget=forms.TextInput(attrs={"autofocus": "autofocus"}), strip=False)
txn_category = forms.ModelChoiceField(queryset=TransactionCategory.objects.all().order_by('txn_category'))
tags = TagWidget()
class Meta:
model = CreditCardTxnDescription
fields = ["description", "description_comment", "txn_category", "tags"]
Как я могу использовать модель TransactionCategory для ModelMultipleChoiceField и ModelChoiceField и чтобы они отображались правильно?