Py学习  »  Django

django admin save()无法从manytomanyfield获取数据

Jay • 6 年前 • 1950 次点击  

我想从 affiliate_networks 在django admin中,当用户单击提交按钮时。

当我从中选择一个 附属网络 然后提交,控制台打印一个空的 附属网络 ,然后我返回到页面,所选对象已正确存储。所以,我再次提交它,然后控制台打印所选对象。 save() 只接收已存储的对象,而不是保存前选择的对象。

有没有办法,我可以 保存() 注意 附属网络 选择任何对象?

class Store(models.Model):
    ...
    affiliate_networks = models.ManyToManyField(AffiliateNetwork, blank=True)

    def save(self, *args, **kwargs):
        print(self.affiliate_networks.all())
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39355
文章 [ 1 ]  |  最新文章 6 年前
Paul Griffin
Reply   •   1 楼
Paul Griffin    7 年前

在save()中不能这样做-正如您所发现的,django-admin直到之后才保存许多对象。您需要在modeladmin的save_相关方法中执行此操作。见 https://timonweb.com/posts/many-to-many-field-save-method-and-the-django-admin/

在admin.py中:

...

class StoreAdmin(admin.ModelAdmin):

    def save_related(self, request, form, formsets, change):
        super(StoreAdmin, self).save_related(request, form, formsets, change)
        print(form.instance.affiliate_networks.all())

...

admin.site.register(Store, StoreAdmin)