代码之家  ›  专栏  ›  技术社区  ›  Roger

将一般创建的Django对象与用户关联

  •  0
  • Roger  · 技术社区  · 16 年前

    这是我的模型:

    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字段具有当前登录用户的值。

    谢谢

    1 回复  |  直到 16 年前
        1
  •  2
  •   cji    16 年前

    我认为使用泛型视图是不可能的(我可以想出一些方法来实现这一点,但这比使用信号、全局和中间件要复杂得多)。您应该编写自己的视图,该视图将使用ModelForm处理Book对象的创建。读一下 here 和 here

    还有,我想你误解了什么 related_name 参数没有-现在,给定一些用户实例,您必须编写:

    books = user.owner.all()
    

    获取此用户的书籍列表。最好还是离开 相关名称 未更改(默认为 relatedmodelname_set ,在这种情况下: user.book_set.all() )或者把它改成更有意义的东西,比如 "books" ,它将允许您编写:

    books = user.books.all()