У меня есть следующие упрощенные настройки:
- Модель, основанная на устаревших данных, которые нельзя изменить.Поэтому я поднимаю ValidationError, чтобы пользователь знал, что не было никаких изменений.Поля формы доступны только для чтения, и я мог бы использовать простой «проход», но я предпочел бы получить сообщение о том, что save () не выполняет того, для чего он предназначен, вместо того, чтобы просто ничего не делать.
- Теперь яЯ расширяю устаревшие данные с помощью второй модели, которая должна быть редактируемой.Он включен в устаревшую модель ModelAdmin как встроенный.Я мог бы включить сам CommentModel в качестве ModelAdmin, но поскольку LegacyModel наследует множество функциональных возможностей от родительских классов, это становится сложным и необременительным.
Мне нужно выполнить операцию «сохранить»только на inline-модели.Я думал, так как все поля только для чтения, он должен работать нормально.Может ли кто-нибудь дать мне подсказку сделать это чисто?
class Legacy(models.Model):
legacyData = models.TextField()
def clean(self):
raise ValidationError("%s model is readonly." % self._meta.verbose_name.capitalize())
class Comment(models.Model):
legacy = models.OneToOneField(Legacy)
comment = models.TextField()
class LegacyAdmin(admin.ModelAdmin):
def __init__(self, *args, **kwargs):
self.readonly_fields = self.fields
super(LegacyAdmin, self).__init__(*args, **kwargs)
model = Legacy
inlines = (CommentInline, )
Большое спасибо за ваше время!:)