У меня есть модель «Производство» и модель «Шоу». «Production» имеет внешний ключ, связывающий его с конкретным показом c.
В админке у пользователя есть возможность заполнить заголовок продукции. В настоящее время это обязательное поле. Однако, если пользователь оставит это поле пустым, я хочу, чтобы его можно было заполнить автоматически, основываясь на заголовке «Показывать чужой ключ».
Я написал функцию, которая переопределяет сохранение и делает это возможным. Однако он не может быть запущен, потому что если пользователь оставляет поле пустым, администратор Django сообщает ему «Это поле обязательно», прежде чем разрешить запуск функции сохранения.
Как я могу предотвратить это? Я не хочу делать поля null = True, пустыми = True в самой модели, потому что я все еще хочу, чтобы это поле всегда заполнялось.
Код ниже (биты убраны для ясности):
@admin.register(Production)
class ProductionAdmin(admin.ModelAdmin):
inlines = [
RoleInLine,
CreativeRoleInLine,
]
def has_change_permission(self, request, obj=None):
if request.user.is_superuser:
return True
if obj is not None and obj.lead_producer != request.user.profile.creative:
return False
return True
def save_model(self, request, obj, form, change):
if not obj.title:
obj.title = obj.show.title + " - " + obj.theatre.city.name + " Production"
obj.save()
class Production(models.Model):
"""Model definition for MODELNAME."""
show = models.ForeignKey(Show, related_name="show",on_delete=models.CASCADE)
title = models.CharField(max_length=100)
subheading = models.CharField(max_length=100,null=True,blank=True)
theatre = models.ForeignKey(Theatre, related_name='theatre', on_delete=models.CASCADE,null=True,blank=True)