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 и чтобы они отображались правильно?

Вернуться на верх