#django #inline-formset
Вопрос:
У меня есть две модели, одна модель комментариев отображается как встроенная в основную модель в администраторе.
models.py:
class MainModel(models.Model):
customer = models.OneToOneField(Customer, on_delete=models.CASCADE)
class CommentModel(models.Model):
main = models.ForeignKey(MainModel, on_delete=models.CASCADE, default=None)
comment_german = CharField(blank=True, default='', null=True)
comment_english = CharField(blank=True, default='', null=True)
admin.py:
class MainModelAdmin(SimpleHistoryAdmin):
model = MainModel
inlines = [CommentModelInline]
class CommentModelInline(admin.StackedInline):
model = CommentModel
fields = ['comment_german', 'comment_english']
Предположим, я хочу автоматически перевести то, что пользователь пишет в поле comment_german, и сохранить это в поле comment_english при сохранении основной модели. Я попытался переопределить метод сохранения. Я успешно сделал это для другой модели, которая не является встроенной. Но это не работает для строк. Мне нужно что-то вроде этого:
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
for comment in CommentModel.objects.filter(main=self):
if comment.comment_german != '' and comment.comment_english == '':
comment.comment_english = comment.comment_german.translate_to_english()
Должен быть способ сделать это, может быть, с помощью набора форм, но я не могу понять этого.