标签: django-orm

Django IntegerField返回字符串(!) - 如何强制转换为int?

我在模型上有一个如下所示的IntegerField:

amount = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

访问它时,它有时会返回一个字符串.造成这种情况的最直接原因是它已经为其分配了一个字符串.到目前为止,如此愚蠢.它甚至在保存后也会返回一个字符串.

这让我感到有些惊讶:如果IntegerField在赋值时将其值强制转换为整数(或者,最迟在保存时),那将是很好的,因此用户可以依赖它作为整数.

(我的应用程序使用sqlite.)

有没有办法让IntegerField只返回整数?或者我是否必须创建自定义字段才能执行此操作?

python django django-models django-orm

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

在reverse_set长度上过滤模型

考虑这些伪类:

class Foo(models.Model):
    pass

class Bar(models.Model):
    foo = models.ForeignKey(Foo)
Run Code Online (Sandbox Code Playgroud)

我想通过Foo的管理器有效地过滤一个QuerySet,它只保存Foo对象,并且至少有2个Bar对象指向它.

django django-models django-orm

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

多对多的关系.ORM Django

class Toy(models.Model):
    name = models.CharField(max_length=20)
    desc = models.TextField()

class Box(models.Model):
    name = models.CharField(max_length=20)
    proprietor = models.ForeignKey(User, related_name='User_Box')
    toys = models.ManyToManyField(Toy, blank=True)
Run Code Online (Sandbox Code Playgroud)

如何创建一个将玩具添加到Box的视图?

def add_this_toy_to_box(request, toy_id):
Run Code Online (Sandbox Code Playgroud)

python django django-orm

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

从值()或values_list()中排除字段

有没有一种有效的方法从函数中排除字段values()values_list.

例如

Videos.objects.filter(id=1).get().values()
Run Code Online (Sandbox Code Playgroud)

我想从此查询集中排除该字段duration.

我知道我可以在结果中指定字段,但是如果我只需要一个字段,那该怎么办.就像在这种情况下,如果我有20个字段,如果我只想要一个不是.

谢谢

python django django-models django-orm

3
推荐指数
2
解决办法
8010
查看次数

Django ManyToMany字段上的自定义列名称

我正在为django中的java应用程序构建UI.我想根据JPA创建的Java表创建Java表.为此,当我使用ManyToMany字段时,新创建的中间表的列名与JPA的列名不匹配.

有没有办法可以为表中的列提供自定义名称所以,以便在Java中不会出现Missing列错误.

任何帮助将非常感激.

django customization model django-orm django-admin

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

Django queryset外键

在Django中对外键关系进行反向查找的正确方法是什么?例如,假设我有以下2个型号.

class Songs(models.Model):
    title = models.CharField(max_length=200)
    artist = models.CharField(max_length=200)
    genre = models.ForeignKey('Genres')

class Genres(models.Model):
    genre = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

如果我希望用户能够根据流派搜索歌曲我该怎么做?

例如,下面是我想要做的,但我知道它不起作用,因为Songs表的流派列是ID,而不是关键字.

song = models.Songs.objects.get(genre='Jazz')
Run Code Online (Sandbox Code Playgroud)

django django-models django-orm django-queryset

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

如何删除Django中每个列表值后面的"L"

我做了一个查询来从模型中获取所有字段值.我将结果存储在一个查询集中.

queryset=Books.objects.filter(book_type="comic")
Run Code Online (Sandbox Code Playgroud)

现在,当我过滤此查询集时:

query=queryset.filter(~Q(auther_id=1))
autherList=[]
for q in query:
    autherList.append(q.auther_id)
print autherList
Run Code Online (Sandbox Code Playgroud)

它将列表打印为:

[3L, 4L, 9L, 13L, 53L, 53L, 102L, 111L, 111L, 111L, 111L] 
Run Code Online (Sandbox Code Playgroud)

我的问题是:这个L表示什么以及如何删除它以获得一个简单的ID列表.

我看了看这个,但找不到任何关于这一点.

python django django-orm

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

使用.distinct()时,Django ORM多次返回相同的值

.distinct()在一组对象上使用时,相同的值被反复重复,这违背了使用的目的.distinct()

我正在研究的项目的一个例子:

In [5]: Section.objects.filter(module=15).values('section').distinct()
Out[5]: [{'section': '1'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, {'section': '2'}, '...(remaining elements truncated)...']
Run Code Online (Sandbox Code Playgroud)

为什么它返回每个值而不是仅返回不同的值?

供参考,这是我的模型:

class Section(models.Model):
    module = models.ForeignKey(Module, on_delete=models.CASCADE)
    title = models.CharField(max_length=400)
    section = models.CharField(max_length=3)
    topic = models.CharField(max_length=3)
    subtopic = models.CharField(max_length=3)
    subsubtopic = models.CharField(max_length=3)
    language = models.CharField(max_length=2)
    def __str__(self): …
Run Code Online (Sandbox Code Playgroud)

python django django-orm

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

注释过滤 - 仅对一些相关对象的字段求和

让我们说有一个作者,他有书.为了将作者与书面页面的数量一起获取,可以完成以下操作:

Author.objects.annotate(total_pages=Sum('book__pages'))
Run Code Online (Sandbox Code Playgroud)

但是,如果我想分别对科幻和奇幻书籍的页面进行总结呢?我想最终得到一个具有total_pages_books_scifi_pages和total_pages_books_fantasy_pages属性的作者.

我知道我可以做以下事情:

Author.objects.filter(book__category='scifi').annotate(total_pages_books_scifi_pages=Sum('book__pages'))
Author.objects.filter(book__category='fantasy').annotate(total_pages_books_fantasy_pages=Sum('book__pages'))
Run Code Online (Sandbox Code Playgroud)

但是如何在一个查询集中呢?

django django-models django-orm

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

默认情况下,禁用django_tables2表的排序

我使用django_tables2呈现我的表。对于一张表,我只想查看最近的5个条目。因此,我需要在将查询集传递给表对象之前对其进行排序:

qset = myObject.objects.order_by('-start_time').all()[:5]
table = MyTableClass(qset, template='path/to/template.html')
Run Code Online (Sandbox Code Playgroud)

这将产生以下错误消息:

AssertionError: Cannot reorder a query once a slice has been taken.
Run Code Online (Sandbox Code Playgroud)

我可以orderable=False为每个设置django_tables.Column,但是由于MyTableClass继承自另一个表类,因此我想避免这种情况。

提前致谢

django django-orm django-tables2

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