Questions tagged «django-models»

对于有关使用Web框架Django中的模型类的问题。


6
如何为具有多对多字段的Django模型创建对象?
我的模特: class Sample(models.Model): users = models.ManyToManyField(User) 我想同时保存user1并保存user2在该模型中: user1 = User.objects.get(pk=1) user2 = User.objects.get(pk=2) sample_object = Sample(users=user1, users=user2) sample_object.save() 我知道这是错误的,但是我敢肯定,您会明白我的意思。你会怎么做?

10
在Django中允许为空的唯一字段
我有模型Foo,它具有栏杆。bar字段应该是唯一的,但允许为空,这意味着如果bar字段为null,我想允许多个记录,但如果不是,null则值必须是唯一的。 这是我的模型: class Foo(models.Model): name = models.CharField(max_length=40) bar = models.CharField(max_length=40, unique=True, blank=True, null=True, default=None) 这是该表的相应SQL: CREATE TABLE appl_foo ( id serial NOT NULL, "name" character varying(40) NOT NULL, bar character varying(40), CONSTRAINT appl_foo_pkey PRIMARY KEY (id), CONSTRAINT appl_foo_bar_key UNIQUE (bar) ) 当使用管理界面在bar为null的情况下创建多个1个foo对象时,它给我一个错误:“此Bar的Foo已经存在。” 但是,当我插入数据库(PostgreSQL)时: insert into appl_foo ("name", bar) values ('test1', …



3
Django ManyToMany filter()
我有一个模型: class Zone(models.Model): name = models.CharField(max_length=128) users = models.ManyToManyField(User, related_name='zones', null=True, blank=True) 我需要根据以下内容构造一个过滤器: u = User.objects.filter(...zones contains a particular zone...) 它必须是User的过滤器,并且必须是单个过滤器参数。这样做的原因是,我正在构造一个URL查询字符串以过滤管理员用户更改列表:http://myserver/admin/auth/user/?zones=3 看起来应该很简单,但我的大脑却不配合!

4
在运行时确定带有upload_to的Django FileField
我正在尝试设置我的上传文件,以便如果用户joe上传文件,则文件将转到MEDIA_ROOT / joe,而不是让每个人的文件都转到MEDIA_ROOT。问题是我不知道如何在模型中定义它。这是当前的外观: class Content(models.Model): name = models.CharField(max_length=200) user = models.ForeignKey(User) file = models.FileField(upload_to='.') 所以我想要的不是“。” 作为upload_to,将其作为用户名。 我知道从Django 1.0开始,您可以定义自己的函数来处理upload_to,但是该函数也不知道谁将成为谁,所以我有点迷失了。 谢谢您的帮助!


2
如何在我的models.py中引用Django设置变量?
这是一个非常初学者的问题。但是我很沮丧。如何在model.py中引用Django设置变量? NameError: name 'PRIVATE_DIR' is not defined 还尝试了很多其他东西,包括 settings.PRIVATE_DIR settings.py: PRIVATE_DIR = '/home/me/django_projects/myproject/storage_dir' models.py: # Problem is here. from django.core.files.storage import FileSystemStorage fs = FileSystemStorage(location=PRIVATE_DIR) class Customer(models.Model): lastName = models.CharField(max_length=20) firstName = models.CharField(max_length=20) image = models.ImageField(storage=fs, upload_to='photos', blank=True, null=True) 正确的方法是什么?

5
如何在Django中过滤用于计数注释的对象?
考虑简单的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) 使用参与者总数来注释事件查询很容易: events = Event.objects.all().annotate(participants=models.Count('participant')) 如何用筛选的参与者计数进行注释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() ))) 更新 2。Django 2.0具有新的条件聚合功能,请参阅下面的可接受答案。

10
在Django中获取模型的字段
给定Django模型,我试图列出其所有字段。我已经看到了使用_meta模型属性执行此操作的一些示例,但是meta前面的下划线是否表示_meta属性是私有属性,不应直接访问?...例如,因为_meta的布局将来可能会更改,并且不是稳定的API? _meta是该规则的例外吗?它是否稳定且可以立即使用,还是访问它的不良做法?还是有一种功能或某种其他方法可以在不使用_meta属性的情况下对模型的字段进行内部检查?以下是一些链接的列表,这些链接显示了如何使用_meta属性执行此操作 任何建议深表感谢。 django对象获取/设置字段 http://www.djangofoo.com/80/get-list-model-fields 如何自省Django模型字段?

4
Django-循环模型导入问题
我真的没有得到这个,所以如果有人可以解释它是如何工作的,我将非常感激。我有两个应用程序,“帐户”和“主题” ...这是我的设置列表: INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'accounts', 'themes', ) 在帐户中,我正在尝试执行以下操作: 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 …

6
创建Django模型或更新(如果存在)
我想创建一个模型对象,例如Person,如果不存在person的id,或者我将得到该person对象。 创建新人员的代码如下: class Person(models.Model): identifier = models.CharField(max_length = 10) name = models.CharField(max_length = 20) objects = PersonManager() class PersonManager(models.Manager): def create_person(self, identifier): person = self.create(identifier = identifier) return person 但是我不知道在哪里检查并获取现有的人对象。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.