Я хочу реализовать функцию «Сохранить как новый» в админке Django для такой модели, как эта:
class Plasmid (models.Model):
name = models.CharField("Name", max_length = 255, blank=False)
other_name = models.CharField("Other Name", max_length = 255, blank=True)
selection = models.CharField("Selection", max_length = 50, blank=False)
created_by = models.ForeignKey(User)
В админке, если пользователь, который запрашивает объект Plasmid, НЕ является тем жекак тот, кто его создал, некоторые из показанных выше полей установлены только для чтения.Если пользователь один и тот же, они все доступны для редактирования.Например:
class PlasmidPage(admin.ModelAdmin):
def get_readonly_fields(self, request, obj=None):
if obj:
if not request.user == obj.created_by:
return ['name', 'created_by',]
else:
return ['created_by',]
else:
return []
def change_view(self,request,object_id,extra_context=None):
self.fields = ('name', 'other_name', 'selection', 'created_by',)
return super(PlasmidPage,self).change_view(request,object_id)
У меня проблема в том, что когда поле доступно только для чтения и пользователь нажимает кнопку «Сохранить как новое», значение этого поля не «переносится» в новоеобъект.С другой стороны, передаются значения полей, которые не только для чтения.
Кто-нибудь почему или как я мог решить эту проблему?Я хочу перенести значения полей только для чтения и не только для чтения в новый объект.