Django:在ManyToManyField中保存新值

0 投票
3 回答
1999 浏览
提问于 2025-04-15 13:59

我在我的代码中提供了一些细节:我不知道为什么我的表格是空的(看起来在调用 save_model 之后变空了,但我不太确定)。

class PostAdmin(admin.ModelAdmin):
    def save_model(self, request, post, form, change):
        post.save()

        # Authors must be saved after saving post
        print form.cleaned_data['authors'] # []
        print request.user # pg
        authors = form.cleaned_data['authors'] or request.user
        print authors # pg
        post.authors.add(authors)

        print post.authors.all() # [<User: pg>]

        # But on a shell, table is empty. WTF ?! : 
        # select * from journal_post_authors;
        # Empty set (0.00 sec)

3 个回答

0

我不知道你在用什么类型的字段,但里面应该有一个这样的东西吧?(或者类似的东西)

author = form.cleaned_data['authors']
User.objects.get(id=author)
1

我找到了解决办法。我只是把cleaned_data里的值改了一下,就好了:

if not form.cleaned_data['authors']:
    form.cleaned_data['authors'] = [request.user]

谢谢你的帮助。:)

2

在你执行 post.authors.add(authors) 之后,需要再次保存这个帖子。

撰写回答