小编aru*_*tgi的帖子

Django:从过滤器查询中获取第一个对象或创建

在Django中,queryset提供了一个名为get_or_create的方法,该方法可以返回对象或创建对象.

但是,与get方法一样,如果查询返回多个对象,get_or_create可能会抛出异常.

有没有一种方法可以优雅地做到这一点:

objects = Model.manager.filter(params)
if len(objects) == 0:
   obj = Model.objects.create(params)
else:
   obj = objects[0]
Run Code Online (Sandbox Code Playgroud)

django django-models django-queryset

23
推荐指数
4
解决办法
5万
查看次数

在Django中排序相关对象

我有2个型号分类和项目.项目引用了类别.

class Category(models.Model):
    name = models.CharField(max_length=32)

class Item(model.Models):
    name = models.CharField(max_length=32)
    category = models.ForeignKey(Category)
    sequence = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

序列字段应该捕获类别中Item的序列.

我的问题是:我需要在类别和/或项目上设置什么元选项,以便在我这样做时:

category.item_set.all()
Run Code Online (Sandbox Code Playgroud)

我得到的项目按序列号排序.

PS:我现在知道一个名为ordering_with_respect_to的元选项..但它仍然不清楚它是如何工作的,而且我在序列列中也有遗留数据.如果正确的方法需要,我愿意接受数据迁移.

django django-models

5
推荐指数
1
解决办法
2259
查看次数

Django模型没有保存..在这里完全迷茫

我在视图中有以下代码

page = get_object_or_404(Page, site = site, slug = slug)
pagecontents = PageContent.objects.filter(page=page)
pagecontents[0].description = form.cleaned_data['description']
pagecontents[0].save()
print pagecontents[0].description
print form.cleaned_data['description']
Run Code Online (Sandbox Code Playgroud)

当两个打印语句执行时,我得到以下内容

为线 print pagecontents[0].description

<p>Most important page</p>
Run Code Online (Sandbox Code Playgroud)

为线 form.cleaned_data['description']

<p>Least important page</p>
Run Code Online (Sandbox Code Playgroud)

为什么对象没有被保存?

django django-models django-forms

3
推荐指数
1
解决办法
4936
查看次数