在我的一个视图中,我定义了一个mixin,用于根据用户的会话详细信息动态设置包括客户机模型在内的许多模型的tech
和operator
字段,这样用户就不需要手动填写这些字段。此密信如下:
class GetTechMixin(object):
"""
View mixin that when the form is saved, sets the
site_user and operator.
"""
def form_valid(self, form):
# Get user
user = self.request.user
# Get tech for this user
site_user = SiteUser.objects.get(user=user)
# Override the tech and operator fields
form.instance.tech = site_user
form.instance.operator = site_user.operator
# Save the object
self.object = form.save()
# Return success URL
return HttpResponseRedirect(self.get_success_url())
我还设置了以下Tastypie API资源,目的是执行相同的操作:
class ClientResource(AbstractModelResource):
class Meta(AbstractModelResource.Meta):
queryset = Client.objects.all()
resource_name = 'client'
def obj_create(self, bundle, **kwargs):
# Get tech for this user
site_user = SiteUser.objects.get(user=bundle.request.user)
# Override the tech and operator fields
bundle.obj.tech = site_user
bundle.obj.operator = site_user.operator
super(ClientResource, self).obj_create(bundle, **kwargs)
万一有人发现这个,我找到了解决办法。最简单的方法就是用一个新方法重写obj_create方法,如下所示:
def obj_create(self, bundle, **kwargs):
# Get tech for this user
site_user = SiteUser.objects.get(user=bundle.request.user)
bundle.obj = self._meta.object_class()
for key, value in kwargs.items():
setattr(bundle.obj, key, value)
# Override the tech and operator fields
setattr(bundle.obj, 'tech', site_user)
setattr(bundle.obj, 'operator', site_user.operator)
self.authorized_create_detail(self.get_object_list(bundle.request), bundle)
bundle = self.full_hydrate(bundle)
return self.save(bundle);
Tastypie 是为 Django 框架提供的 Web 服务 API,提供了常规的、强大以及高可定制的、抽象的创建 RESTful 风格接口的工具。 特性: Full GET/POST/PUT/DELETE/PATCH support Reasonable defaults Designed to be extended at every turn A variety of serializat
问题内容: 我想更改模型中特定字段的名称: 应更改为: 使用South进行此操作最简单的方法是什么? 问题答案: 你可以使用该功能。 的第一个参数是表名,因此记住如何创建表名很重要: Django自动从你的模型类和包含它的应用程序的名称中派生数据库表的名称。通过将模型的“应用程序标签”(即你在manage.py startapp中使用的名称)与模型的类名称连接在一起,并在其之间加下划线,来构造模型
问题内容: 我只是尝试重置这样的值: 但是它没有产生任何东西,有解决的主意吗? jsfiddle上有一个工作示例 问题答案: 这真的是关于JavaScript的问题(因此我添加了“ javascript”标记)。将JavaScript对象(例如$ scope.initial数组)分配给变量时,它是通过引用而不是副本来分配的。所以,这句话 导致$ scope.datas指向$ scope.initi
字段选项 以下参数适用于所有字段类型。全部都是可选的。 null 如果是 True,Django 将允许在数据库该字段的值为 NULL。默认是 False。 blank 如果是 True,该字段被允许为空值。默认是 False。 !> 请注意,这不同于 null。null 纯粹是与数据库相关的,而 blank 与验证相关。如果一个字段有 blank=True,表单验证将允许输入一个空值。如果一个字
在上一节中,字段的配置是这样的。S则是引入的Sequelize,为了编写方便,重命名了一下。 { email: S.STRING, name: S.STRING } 在 define 函数的声明里面,需要传入的字段配置项其实是 DefineAttributes 类型。 [name: string]: string | DataTypeAbstract | DefineAttribu
使用,我在基本模板中定义了一个,其中包含默认内容。在某些情况下,我希望这个块为空,所以我想我可以重新定义它的名称,并使它不包含以下内容: 不知何故,Go似乎认为这个定义是“零”,并且仍然会呈现默认内容,除非我将任何非空白内容放入定义中。 我在Golang repo上发现了这个问题,它在一个游乐场示例中很好地描述了同样的事情: 奇怪的是,这个问题提到它是固定的(如果我理解正确的话,它在1.8.1中着