Django admin Inline model не сохраняет id для связанной таблицы
Я объединил две модели в одну в панели администратора с помощью admin.TabularInline
и ниже приведен мой код, который я пробовал, насколько мне известно.
class ProdutImageTabulurInline(admin.TabularInline):
model = ProductImage
exclude = ['user', 'name', 'status']
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
inlines = [
ProdutImageTabulurInline
]
# For Do operation before save operation
def save_model(self, request, obj, form, change):
obj.user = request.user
return super().save_model(request, obj, form, change)
# https://stackoverflow.com/questions/59580458/how-can-i-access-model-instance-in-save-related-method-of-modeladmin-class
def save_related(self, request, form, formsets, change):
obj = form.instance
obj.user = request.user
super(ProductAdmin, self).save_related(request, form, formsets, change)
Я скрыл поле User из ProductImages, так как хочу, чтобы оно хранило идентификатор пользователя по умолчанию как идентификатор вошедшего пользователя.
Итак, я использовал save_model
для таблицы product, и она сохраняет user_id, как и ожидалось.
но я хочу, чтобы это сохранялось и в таблице изображений товаров,
и это не работает
Я использовал метод save_formset
вместо save_related
Мой код выглядит примерно так, и он работает
def save_formset(self, request, form, formset, change):
for inline_form in formset.forms:
inline_form.instance.user = request.user
inline_form.instance.name = "sample name"
super().save_formset(request, form, formset, change)
save_related
: вызывается один раз после сохранения модели с помощьюsave_model
.
save_formset
: это будет вызываться много раз во время каждого обновления, по одному разу для каждой строки, определенной в ModelAdmin. .