将用户关联为另一个模型中的外键后的不确定性

时间:2018-08-04 13:42:24

标签: python django django-models

我对另一个模型中的关联用户作为外键有疑问。

当我在Post模型中将用户关联为外键时,我保存为:

post.user = self.request.user

我希望用户名完全是发布内容的用户,并且它不应允许更改和编辑用户权限,因为如果我可以在特定帖子中更改用户,则该帖子已不属于该人

但是当我进入管理员并尝试更改帖子模型中的用户时,我可以编辑/更改特定帖子中的用户,并且该帖子不再是同一个人,如果这可能发生或我错过了某些事情?

此外,保存帖子时我没有收到任何错误,一切都很好。

谢谢,希望你们明白我在说什么。

models.py

 class PostModel(models.Model):
        user = models.ForeignKey(User, on_delete = models.CASCADE)
        title = models.CharField(max_length =200, unique = True)
        created_at = models.DateTimeField(auto_now=True)
        file = models.FileField(upload_to="post", validators=[FileExtensionValidator(allowed_extensions=['gif','png','jpg','jpeg','mp4'])])
        description = models.TextField()

        def __str__(self):
            return self.title

views.py

class PostView(LoginRequiredMixin,generic.CreateView):
    model = PostModel
    fields = ['title','file','description']
    template_name = 'post/post.html'
    success_url = reverse_lazy('home')

    def form_valid(self, form):
        post= form.save(commit=False)
        post.user = self.request.user
        post.save()
        return super(PostView, self).form_valid(form)

1 个答案:

答案 0 :(得分:0)

不太确定您要什么。但是Django admin用于站点数据管理,因此默认情况下只允许管理员直接修改管理站点中的数据。

如果您正在寻找一种方法,即使管理员站点中的管理员也无法修改这些字段,则必须进行进一步的自定义配置,例如将该字段设置为ModelAdmin.list_editable