我是Python&Django新手。我想允许用户创建新的对象,并且每个对象都与当前登录的用户相关。所以,我想我应该使用泛型的create\u object方法-只是我不知道如何最好地做到这一点,所以它既简单又安全。你知道吗
这是我的模型:
class Book(models.Model):
user = models.ForeignKey(User, related_name='owner',
editable=False)
title = models.CharField(max_length=200,
help_text='A title for this entry')
author = models.CharField(max_length=200)
这是一个非常简单的模型-用户可以输入书名和作者,“用户”字段设置为不可编辑。创建对象时,我希望user字段具有当前登录用户的值。你知道吗
我可以用泛型的create\u object方法来实现吗?最好的方法是什么?我不想在表单中使用隐藏字段,因为它显然不安全。你知道吗
谢谢
我认为使用泛型视图是不可能的(我可以想出一些方法来实现这一点,但这比使用信号、全局和中间件要复杂得多)。您应该编写自己的视图,该视图将使用ModelForm处理Book对象的创建。阅读here和here(Django文档)。你知道吗
另外,我认为您误解了
related_name
参数的作用-现在,给定一些用户实例,您必须编写:获取此用户的书籍列表。最好是保持
related_name
不变(默认值为relatedmodelname_set
,在本例中为:user.book_set.all()
),或者将其更改为更有意义的内容,如"books"
,这样您就可以编写:得到你想要的。你知道吗
相关问题 更多 >
编程相关推荐