标签: django-models

Django ManyToMany过滤器()

我有一个模特:

class Zone(models.Model):
    name = models.CharField(max_length=128)
    users = models.ManyToManyField(User, related_name='zones', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

我需要构建一个过滤器:

u = User.objects.filter(...zones contains a particular zone...)
Run Code Online (Sandbox Code Playgroud)

它必须是User上的过滤器,它必须是单个过滤器参数.这样做的原因是我正在构建一个URL查询字符串来过滤管理员用户更改列表:http://myserver/admin/auth/user/?zones=3

看起来它应该很简单,但我的大脑不合作!

django django-models

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

如何在Django中获取当前登录用户的用户ID?

如何获取当前登录用户的ID?

models.py:

class Game(models.model):
    name = models.CharField(max_length=255)
    owner = models.ForeignKey(User, related_name='game_user', verbose_name='Owner')
Run Code Online (Sandbox Code Playgroud)

views.py:

gta = Game.objects.create(name="gta", owner=?)
Run Code Online (Sandbox Code Playgroud)

django django-models django-authentication

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

如何在Django中过滤count对注释的对象?

考虑简单的Django模型EventParticipant:

class Event(models.Model):
    title = models.CharField(max_length=100)

class Participant(models.Model):
    event = models.ForeignKey(Event, db_index=True)
    is_paid = models.BooleanField(default=False, db_index=True)
Run Code Online (Sandbox Code Playgroud)

使用参与者总数来注释事件查询很容易:

events = Event.objects.all().annotate(participants=models.Count('participant'))
Run Code Online (Sandbox Code Playgroud)

如何用过滤的参与者数量进行注释is_paid=True

我需要查询所有事件而不管参与者的数量,例如,我不需要按注释结果进行过滤.如果有0参与者,那没关系,我只需要0注释值.

文档中的示例在此处不起作用,因为它从查询中排除对象而不是使用它进行注释0.

更新.Django 1.8具有新的条件表达式功能,所以现在我们可以这样做:

events = Event.objects.all().annotate(paid_participants=models.Sum(
    models.Case(
        models.When(participant__is_paid=True, then=1),
        default=0,
        output_field=models.IntegerField()
    )))
Run Code Online (Sandbox Code Playgroud)

更新2. Django 2.0具有新的条件聚合功能,请参阅下面接受的答案.

python django django-models django-aggregation

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

在Django中获取模型的字段

给定一个Django模型,我试图列出它的所有字段.我已经看到了一些使用_meta模型属性执行此操作的示例,但是meta前面的下划线是否表示_meta属性是私有属性,不应该直接访问?...例如,因为_meta的布局将来可能会改变而不是一个稳定的API?

_meta是这个规则的例外吗?它是否稳定并且可以使用,或者它被认为是不好的做法?或者是否有函数或其他方法来反省模型的字段而不使用_meta属性?下面是一些链接的列表,显示了如何使用_meta属性执行此操作

任何建议都非常感谢.

django对象获取/设置字段

http://www.djangofoo.com/80/get-list-model-fields

如何反省django模型领域?

django introspection django-models metamodel

107
推荐指数
7
解决办法
9万
查看次数

Django values_list vs values

在Django中,以下两者之间有什么区别:

Article.objects.values_list('comment_id', flat=True).distinct()
Run Code Online (Sandbox Code Playgroud)

VS

Article.objects.values('comment_id').distinct()
Run Code Online (Sandbox Code Playgroud)

我的目标是获得每个下面的唯一注释ID列表Article.我已经阅读了文档(实际上已经使用了这两种方法).结果显然似乎相似.

django django-models django-orm django-queryset

107
推荐指数
4
解决办法
10万
查看次数

可以在创建时将字典传递给django模型吗?

有可能用列表,字典或其他东西做类似的事情吗?

data_dict = {
    'title' : 'awesome title',
    'body' : 'great body of text',
}

Model.objects.create(data_dict)
Run Code Online (Sandbox Code Playgroud)

如果我可以延长它,那就更好了

Model.objects.create(data_dict, extra='hello', extra2='world')
Run Code Online (Sandbox Code Playgroud)

python django django-models django-queryset

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

在Django forms.ChoiceField上设置所选值

以下是表单中的字段声明:

max_number = forms.ChoiceField(widget = forms.Select(), 
    choices = ([('1','1'), ('2','2'),('3','3'), ]), initial='3', required = True,)
Run Code Online (Sandbox Code Playgroud)

我想将初始值设置为3,这似乎不起作用.我玩过param,引用/没有引号等...但没有变化.

我通过Google发现的一些结果表明可以设置初始值,但我从来没有设法让它工作!顺便说一句,我在django 1.0上.

如果可能,有人能给我一个明确的答案吗?和/或我的代码片段中的必要调整?

非常感谢.

django django-models django-forms

105
推荐指数
5
解决办法
13万
查看次数

调整Django Admin中的字段大小

当在管理员上添加或编辑条目时,Django往往会填满水平空间,但在某些情况下,真正浪费空间,即编辑日期字段,8个字符宽,或CharField,也是6或8 chars wide,然后编辑框上升到15或20个字符.

如何告诉管理员文本框应该有多宽,或者TextField编辑框的高度?

python django django-models django-admin

103
推荐指数
9
解决办法
5万
查看次数

如何在models.py中引用django设置变量?

这是一个非常初学的问题.但我很难过.如何在model.py中引用django设置变量?

NameError:名称'PRIVATE_DIR'未定义也尝试了很多其他的东西,包括 settings.PRIVATE_DIR

这样做的正确方法是什么?

--------- ------------- settings.py

NameError: name 'PRIVATE_DIR' is not defined
Run Code Online (Sandbox Code Playgroud)

--------- model.py ---------------

PRIVATE_DIR = '/home/me/django_projects/myproject/storage_dir'
Run Code Online (Sandbox Code Playgroud)

django django-models django-settings

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

Django - 循环模型导入问题

我真的没有得到这个,所以如果有人能解释这是如何工作的,我会非常感激.我有两个应用程序,帐户和主题......这是我的设置列表:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'accounts',
    'themes',
)
Run Code Online (Sandbox Code Playgroud)

在帐户中,我试图这样做:

from themes.models import Theme

class Account(models.Model):
    ACTIVE_STATUS = 1
    DEACTIVE_STATUS = 2
    ARCHIVE_STATUS = 3
    STATUS_CHOICES = (
        (ACTIVE_STATUS, ('Active')),
        (DEACTIVE_STATUS, ('Deactive')),
        (ARCHIVE_STATUS, ('Archived')),
    )

    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=250)
    slug = models.SlugField(unique=True, verbose_name='URL Slug')
    status = models.IntegerField(choices=STATUS_CHOICES, default=ACTIVE_STATUS, max_length=1)
    owner = models.ForeignKey(User)
    enable_comments = models.BooleanField(default=True)
    theme = models.ForeignKey(Theme)
    date_created = models.DateTimeField(default=datetime.now)
Run Code Online (Sandbox Code Playgroud)

在我的主题模型中:

class Theme(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=250)
    slug = models.SlugField(unique=True, verbose_name='URL Slug')
    date_created …
Run Code Online (Sandbox Code Playgroud)

django django-models

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