Django сохраняет как объект (1) вместо значения?

Я использую ModelChoiceField в форме и пытаюсь сохранить форму, но она сохраняется как Object (1) и Object (2) вместо имени данных.

Я знаю, что могу изменить это, добавив

def __str__(self):
   return self.name

в модель, но я не хочу изменять это, так как это связано с другими вещами. Есть ли другой способ добиться этого, не добавляя str в модель?

My model:
class TrendingCourse(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    course = models.CharField(max_length=256)
    course_slug = models.CharField(max_length=256)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now = True)

И моя форма:

class MyModelChoiceField(ModelChoiceField):
    def label_from_instance(self, obj):
        return obj.name


class CourseForm(ModelForm):

    course_slug = forms.CharField(widget=forms.TextInput({'class': 'form-control'}), required=False)

    course = MyModelChoiceField(queryset=Course.objects.filter(owner_id=2), widget=forms.Select(attrs={'class': 'form-control form-select', 'data-placeholder':'Select any trending course'}))

    class Meta:
        model = TrendingCourse
        fields = [ 'course', 'course_slug' ]
Вернуться на верх