Tag: django models

在django中区分null = True,blank = True

当我们在django中添加数据库字段时,我们通常会编写models.CharField(max_length=100, null=True, blank=True) 。 与ForeignKey , DecimalField等完成相同的是有什么基本的区别 null=True仅为null=True blank=True仅为blank=True null=True , blank=True 关于不同的( CharField , ForeignKey , ManyToManyField , DateTimeField )字段。 使用1/2/3有什么优点/缺点?

Django模板系统,调用模型中的函数

我想从模型中调用一个函数,例如: class ChannelStatus(models.Model): ………………………… ………………………… def get_related_deltas(self,epk): mystring = "" if not self.get_error_code_delta(epk): return mystring else: for i in self.get_listof_outage(): item = i.error_code.all() for x in item: if epk == x.id: mystring= mystring +" "+str(i.delta()) return mystring 而当我想从模板中调用这个:假设渲染时,我传递给channel_status_list channel_status_list = ChannelStatus.objects.all() {% for i in channel_status_list %} {{ i.get_related_deltas(3) }} {% endfor %} 这不起作用,我可以调用一个不消耗任何东西的函数,但是如果它有参数,它就不会find该做什么。 干杯

为什么不django的model.save()调用full_clean()?

我只是好奇,如果有人知道为什么django的orm不会在模型上调用“full_clean”,除非它被保存为模型表单的一部分。 请注意,调用模型的save()方法时,不会自动调用full_clean()。 当您想要为自己手动创build的模型运行一步模型validation时,您需要手动调用它。 django的完整清洁文档 (注意:引用更新为Django 1.6 …以前的django文档也有关于ModelForms的警告。) 人们不希望这种行为有充分的理由吗? 我认为如果你花时间为模型添加validation,那么每次保存模型时都要运行validation。 我知道如何让一切正常工作,我只是在寻找一个解释。

如何创build一个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() 我知道这是错误的:D,但我相信你得到了我想要做的事情…那么你会怎么做呢?

筛选查询集中的空名称或空名称

我有first_name,last_name&别名(可选),我需要search。 所以,我需要一个查询来给我所有的名称有一个别名集。 只有我能做到: Name.objects.filter(alias!="") 那么,什么是上面的等效?

如何将Django模型字段的默认值设置为函数调用/可调用(例如,相对于创build模型对象的date)

编辑: 我怎样才能设置一个Django字段的默认值,每次创build一个新的模型对象时得到评估的函数? 我想要做类似于下面的事情,除了在这段代码中,代码被计算一次,并将每个模型对象的默认值设置为相同的date,而不是在每次创build模型对象时评估代码。 from datetime import datetime, timedelta class MyModel(models.Model): # default to 1 day from now my_date = models.DateTimeField(default=datetime.now() + timedelta(days=1)) 原版的: 我想创build一个函数参数的默认值,以便它是dynamic的,每次调用函数时都会被调用和设置。 我怎样才能做到这一点? 例如, from datetime import datetime def mydate(date=datetime.now()): print date mydate() mydate() # prints the same thing as the previous call; but I want it to be a newer value 具体来说,我想在Django中做到这一点,例如, […]

自定义QuerySet和pipe理器没有打破DRY?

我试图find一种方法来实现一个自定义的QuerySet和一个自定义Manager没有打破DRY。 这是我迄今为止: class MyInquiryManager(models.Manager): def for_user(self, user): return self.get_query_set().filter( Q(assigned_to_user=user) | Q(assigned_to_group__in=user.groups.all()) ) class Inquiry(models.Model): ts = models.DateTimeField(auto_now_add=True) status = models.ForeignKey(InquiryStatus) assigned_to_user = models.ForeignKey(User, blank=True, null=True) assigned_to_group = models.ForeignKey(Group, blank=True, null=True) objects = MyInquiryManager() 这工作正常,直到我做这样的事情: inquiries = Inquiry.objects.filter(status=some_status) my_inquiry_count = inquiries.for_user(request.user).count() 由于QuerySet与Manager没有相同的方法,因此会立即中断一切。 我试过创build一个自定义的QuerySet类,并在MyInquiryManager实现它,但是最终我复制了所有的方法定义。 我也发现这个代码片段可以工作,但是我需要将额外的parameter passing给for_user所以它会中断,因为它很大程度上依赖于重新定义get_query_set 。 有没有办法做到这一点,而无需在QuerySet和Manager子类中重新定义我的所有方法?

获取所有相关的Django模型对象

我怎样才能得到一个所有的模型对象有一个ForeignKey指向一个对象的列表? (类似DELETE CASCADE之前的Djangopipe理员中的删除确认页面)。 我试图想出一个在数据库中合并重复对象的通用方法。 基本上我希望所有具有ForeignKeys指向对象“B”的对象都被更新为指向对象“A”,这样我就可以删除“B”而不会丢失任何重要的东西。 谢谢你的帮助!

在Django中加载fixture时contenttypes的问题

由于内容types冲突,我无法将Django Fixtures加载到我的MySQL数据库中。 首先,我尝试从我的应用程序倾销数据,如下所示: ./manage.py dumpdata escola > fixture.json 但我一直在错过外键问题,因为我的应用程序“escola”使用来自其他应用程序的表。 我不断添加额外的应用程序,直到我得到这个: ./manage.py dumpdata contenttypes auth escola > fixture.json 现在,当我尝试加载数据作为testing夹具时,问题是以下约束冲突: IntegrityError: (1062, "Duplicate entry 'escola-t23aluno' for key 2") 看来问题是,Django试图dynamic重新创build与主键值不同的主键值的contenttypes。 这似乎与此处logging的错误相同: http : //code.djangoproject.com/ticket/7052 问题是推荐的解决方法是转储我已经在做的contenttypes应用程序! 是什么赋予了? 如果它有什么区别,我有一些自定义模型的权限,这里logging: http : //docs.djangoproject.com/en/dev/ref/models/options/#permissions

在Django中获取模型的字段

给定一个Django模型,我试图列出所有的字段。 我已经看到一些使用_meta模型属性来做这个事情的例子,但是meta前面的下划线没有表明_meta属性是一个私有属性,不应该被直接访问? …因为,例如,_meta的布局可能会在将来改变,而不是一个稳定的API? _meta是这个规则的例外吗? 它是稳定的,准备好使用还是被认为是不好的做法? 或者有没有一个函数或其他方式来反思模型的字段,而不使用_meta属性? 以下是使用_meta属性显示如何执行此操作的一些链接列表 任何意见,非常感谢。 django对象get / set字段 http://www.djangofoo.com/80/get-list-model-fields 如何内省django模型领域?