关于Django在我的模型中访问和保存用户外键的问题

时间:2011-03-14 03:43:56

标签: django django-authentication

我看到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()

1 个答案:

答案 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}}才能实现...