如何在 ModelAdmin class 的 save_related 方法中访问模型实例?

How can I access model instance in save_related method of ModelAdmin class?

我有一个具有 2 个属性的模型,其值取决于相关项:

class Offer(models.Model):
    rating = models.DecimalField(max_digits=3, decimal_places=1, default=0)
    count = models.IntegerField(default=0)

相关项目在管理页面中设置为模型的内联。我想在通过管理页面添加新的相关项目后执行两个功能。当我覆盖 save_model 方法时,新的相关项目尚未保存,因为显然 save_related 方法在 save_model

之后执行
class OfferAdmin(admin.ModelAdmin):
    model = Offer
    inlines = [
        CommentInline
    ]

    def save_model(self, request, obj, form, change):
        super().save_model(request, obj, form, change)
        obj.rating = get_rating(obj)
        obj.count = get_count(obj)
        obj.save()

如何在 save_related 中访问对象并更改模型实例?

您在这里要做的是访问 OfferAdmin

中的内联数据

你可以这样做

def save_related(self, request, form, formsets, change):
    obj = form.instance
    # make changes to model instance
    obj.save()
    super(OfferAdmin, self).save_related(request, form, formsets, change)

希望对您有所帮助!