Python Django UpdateView

Python Django UpdateView,python,django,django-views,Python,Django,Django Views,我正在使用通用Django视图在my Views.py中创建CreateView和UpdateView,其中字段“Author”是模型中的ForeignKeyField: class BookCreate(CreateView): model = Book fields = ['title', 'author'] 一般呈现的创建表单提供了一个下拉列表,我可以在其中选择作者-到目前为止还不错。我的问题是:如何按字母顺序对下拉列表进行排序 提前感谢您的帮助 订购发生在模型部分 因此

我正在使用通用Django视图在my Views.py中创建CreateView和UpdateView,其中字段“Author”是模型中的ForeignKeyField:

class BookCreate(CreateView):
    model = Book
    fields = ['title', 'author']
一般呈现的创建表单提供了一个下拉列表,我可以在其中选择作者-到目前为止还不错。我的问题是:如何按字母顺序对下拉列表进行排序


提前感谢您的帮助

订购发生在模型部分

因此,作者模型将如下所示:

class Author(models.Model):
    name = models.CharField(max_length=40)
    # other fields
    class Meta:
        ordering = ('name,')
有关更多详细信息,请查看文档:


  • 在模型部分进行排序

    因此,作者模型将如下所示:

    class Author(models.Model):
        name = models.CharField(max_length=40)
        # other fields
        class Meta:
            ordering = ('name,')
    
    有关更多详细信息,请查看文档:


  • 最简单的方法是向模型中添加一些顺序,例如:

    class Author(models.Model):
        name = models.CharField(max_length=128)
    
        class Meta:
            ordering = ['name']
    然后,我们可以使用以下内容插入此表单:

    class BookCreate(CreateView):
        model = Book
        form_class = BookForm
    class BookCreate(CreateView):
    模型=书
    
    form_class=BookForm
    最简单的方法是向模型中添加一些排序,例如:

    class Author(models.Model):
        name = models.CharField(max_length=128)
    
        class Meta:
            ordering = ['name']
    然后,我们可以使用以下内容插入此表单:

    class BookCreate(CreateView):
        model = Book
        form_class = BookForm
    class BookCreate(CreateView):
    模型=书
    
    form_class=BookForm
    在重写CreateView的
    def get_queryset()时,可以使用
    order_by
    ?A
    ForeignKey
    到您自己制作的模型?抱歉,我是新手:-)所以我将该定义放在类中?是的,作者是我的model@Dennis:但是要什么型号的?目标模型是什么?覆盖CreateView的
    def get\u queryset()时,可以使用
    order\u by
    什么是
    作者
    ?A
    ForeignKey
    到您自己制作的模型?抱歉,我是新手:-)所以我将该定义放在类中?是的,作者是我的model@Dennis:但是要什么型号的?目标模型是什么?无需创建仅用于订购的表单。您可以使用
    get_form
    方法获取生成的表单,只需使用
    fields
    属性更改查询集即可。@DavitTovmasyan:这确实不是必需的。但是相当难看。就像重写
    get\u context\u data
    而不是使用传递给模板的视图一样。无需创建表单进行排序。您可以使用
    get_form
    方法获取生成的表单,只需使用
    fields
    属性更改查询集即可。@DavitTovmasyan:这确实不是必需的。但是相当难看。就像覆盖
    get\u context\u data
    而不是使用传递给模板的视图一样。