请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

如何把request.user传入Inline的Model中保存?

class CourseAdmin(object):
    list_display = ['name', 'keyword', 'create_user', 'fav_num', 'click_num']
    inlines = [LessonInline]
    def save_models(self):
        self.new_obj.create_user = self.request.user
        super().save_models()

在Course的Model中有create_user字段,通过save_models()方法可以将request.user存入。

通过inlines进来Lesson的Model同样有create_user字段,如何将request.user传给Lesson并保存?

正在回答 回答被采纳积分+3

2回答

bobby 2018-08-15 16:45:33

https://img1.sycdn.imooc.com//szimg/5b73e8270001b3f113330519.jpg 你看看这个源码呢

0 回复 有任何疑惑可以回复我~
  • 提问者 慕码人5158868 #1
    def save_related(self):
        instances = self.instance_forms()
        for instance in instances:
            instance.create_user = self.request.user
        super().save_related()
    
    for instance in instances:这行报错'NoneType' object is not iterable
    请问老师如何能遍历到inlines里面的每个form?
    回复 有任何疑惑可以回复我~ 2018-08-16 02:02:09
  • bobby 回复 提问者 慕码人5158868 #2
    你可以直接调用save_models中直接根据当前对象去获取所有的已经保存到数据表中的inline数据 然后做修改啊,为什么一定要一开始就从form中获取呢
    回复 有任何疑惑可以回复我~ 2018-08-17 11:52:20
提问者 慕码人5158868 2018-08-14 00:27:35
class ArticleAdmin(admin.ModelAdmin):
    def save_formset(self, request, form, formset, change):
        instances = formset.save(commit=False)
        for obj in formset.deleted_objects:
            obj.delete()
        for instance in instances:
            instance.user = request.user
            instance.save()
        formset.save_m2m()

在Django的官方文档中有上面一段,不知道Xadmin在对Inlines的Model做保存时,是否采用了此方法。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信