Я пытаюсь добавить prepopulated_fields в моем классе администратора, как это:
class ProfileAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ('get_trainer_name',)}
def get_trainer_name(self, obj):
return obj.user.get_full_name()
но получил ошибку en
ERRORS:
<class 'trainers.admin.ProfileAdmin'>: (admin.E030) The value of 'prepopulated_fields["slug"][0]' refers to 'get_trainer_name', which is not an attribute of 'trainers.Profile'.
models.py
class Profile(models.Model):
user = models.OneToOneField(User, related_name='profile', null=True)
slug = models.SlugField()
Также я попытался сделать это по-другому - переопределить метод сохранения моделей:
class Profile(models.Model):
user = models.OneToOneField(User, related_name='profile', null=True)
slug = models.SlugField()
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.user.get_full_name())
super(Profile, self).save(*args, **kwargs)
но это не дало результата ..
В соответствии с советом @Tiger_Mike, который я пытался сделать на ProfileAdmin
def get_form(self, request, obj=None, **kwargs):
form = super(ProfileAdmin, self).get_form(request, obj, **kwargs)
if not obj.slug:
obj.slug = slugify(obj.user.get_full_name())
return form
И он не работает со slugify, но хорошо работает без slugify