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' ]