关于Django在我的模型中访问和保存用户Foriegnkey的问题
我明白了,但我想知道是否有更简单的方法来实现这一点 也跟着 下面给出了一个示例模型关于Django在我的模型中访问和保存用户Foriegnkey的问题,django,django-authentication,Django,Django Authentication,我明白了,但我想知道是否有更简单的方法来实现这一点 也跟着 下面给出了一个示例模型 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_
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()
假设您已经用
django admin
标记了它,我假设您希望保存通过管理界面修改对象的用户。(您不能在模型的保存方法中真正做到这一点,因为它不一定有权访问用户
对象——例如,如果您正在从shell界面保存对象,该怎么办?)
要在Django的admin中执行此操作,只需覆盖您的ModelAdmin
的save\u model
方法:
class PostAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
obj.user = request.user
obj.save()
admin.site.register(Post, PostAdmin)
当然,您需要在您的模型中添加一个名为user
的ForeignKey
,这样才能工作…我明白了。那么,如果有用户Foreignkey,人们如何在模型中保存用户呢?您只需要将User=models.Foreignkey(User)
添加到您的模型中。那么上面的代码应该可以正常工作。我同意,但这是从管理界面。在我的应用程序中,使用django的auth有什么简单的方法可以做到这一点吗?只有当你可以访问请求对象时,在这种情况下,解决方案不会比你发布的原始链接简单得多——一个模型表单保存对请求的引用,并在保存时从中提取用户。我一直在寻找解决这个问题的方法。我的用户已登录,我有foreignkey设置,但它给我一个错误无法分配None:“MyModel.user”不允许空值。
我一直在寻找解决此问题的方法。我的用户已登录,我有foreignkey设置,但它给我一个错误无法分配None:“MyModel.user”不允许空值。