我看到similar to this has been asked before,但我想知道是否有更简单的方法来实现这一目标。
也跟着this blog post。
下面给出了一个样本模型。
class Post (models.Model):
name = models.CharField(max_length=1000, help_text="required, name of the post")
description = models.TextField(blank=True)
created_datetime = models.DateTimeField(auto_now_add=True, editable=False)
modified_datetime = models.DateTimeField(auto_now=True, editable=False)
custom_hashed_url = models.CharField(unique=True, max_length=1000, editable=False)
def save(self, *args, **kwargs):
#How to save User here?
super(Model, self).save()
在调用save()之前,是不是可以将当前登录的用户发送到模型?
在视图中:
if request.method == 'POST':
if not errors:
f = PostForm(request.POST)
f.save()
答案 0 :(得分:1)
鉴于您已使用django-admin
对此进行了标记,我假设您希望保存通过管理界面修改对象的User
。 (你不能在模型的save方法中真正做到这一点,因为它不一定能访问User
对象 - 例如,如果你从shell接口保存一个对象会怎么样?)
要在Django的管理员中执行此操作,只需覆盖save_model
的{{1}}方法:
ModelAdmin
当然,您需要在模型中实际添加名为class PostAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
obj.user = request.user
obj.save()
admin.site.register(Post, PostAdmin)
的{{1}}才能实现...