我对另一个模型中的关联用户作为外键有疑问。
当我在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)
答案 0 :(得分:0)
不太确定您要什么。但是Django admin用于站点数据管理,因此默认情况下只允许管理员直接修改管理站点中的数据。
如果您正在寻找一种方法,即使管理员站点中的管理员也无法修改这些字段,则必须进行进一步的自定义配置,例如将该字段设置为ModelAdmin.list_editable
。