我有一个模特:
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
看起来它应该很简单,但我的大脑不合作!
如何获取当前登录用户的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模型Event和Participant:
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)
给定一个Django模型,我试图列出它的所有字段.我已经看到了一些使用_meta模型属性执行此操作的示例,但是meta前面的下划线是否表示_meta属性是私有属性,不应该直接访问?...例如,因为_meta的布局将来可能会改变而不是一个稳定的API?
_meta是这个规则的例外吗?它是否稳定并且可以使用,或者它被认为是不好的做法?或者是否有函数或其他方法来反省模型的字段而不使用_meta属性?下面是一些链接的列表,显示了如何使用_meta属性执行此操作
任何建议都非常感谢.
在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.我已经阅读了文档(实际上已经使用了这两种方法).结果显然似乎相似.
有可能用列表,字典或其他东西做类似的事情吗?
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) 以下是表单中的字段声明:
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往往会填满水平空间,但在某些情况下,真正浪费空间,即编辑日期字段,8个字符宽,或CharField,也是6或8 chars wide,然后编辑框上升到15或20个字符.
如何告诉管理员文本框应该有多宽,或者TextField编辑框的高度?
这是一个非常初学的问题.但我很难过.如何在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) 我真的没有得到这个,所以如果有人能解释这是如何工作的,我会非常感激.我有两个应用程序,帐户和主题......这是我的设置列表:
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 ×10
django-models ×10
python ×3
django-admin ×1
django-forms ×1
django-orm ×1
metamodel ×1