英文:
How can I access model instance in save_related method of ModelAdmin class?
问题
以下是已翻译的内容:
我有一个具有2个属性的模型,其值取决于相关项:
```python
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中访问对象并对模型实例进行更改?
<details>
<summary>英文:</summary>
I have a model with 2 attributes which value depends on related items:
class Offer(models.Model):
rating = models.DecimalField(max_digits=3, decimal_places=1, default=0)
count = models.IntegerField(default=0)
Related items are set as inlines of model in admin page. I want to execute two functions after adding new related items via admin page. When I overwrite save_model method new related items are not saved yet as apparently save_related method executes after 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()
How can I access object and make changes in model instance in save_related?
</details>
# 答案1
**得分**: 2
你正在尝试的事情是访问`OfferAdmin`中的内联数据。
你可以这样做:
```python
def save_related(self, request, form, formsets, change):
obj = form.instance
# 对模型实例进行更改
obj.save()
super(OfferAdmin, self).save_related(request, form, formsets, change)
希望这有所帮助!
英文:
The thing you are trying to do here is accessing the inline data in the OfferAdmin
You can do something like
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)
Hope this helps!
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论