我正在使用inlineformset_factory中间出勤模型为客户和会话之间的多对多关系创建字段.
我在视图文件中有以下内容:
AttendanceFormset = inlineformset_factory(
Session,
Attendance,
formset=BaseAttendanceFormSet,
exclude=('user'),
extra=1,
max_num=10,
)
session = Session(user=request.user)
formset = AttendanceFormset(request.POST, instance=session)
Run Code Online (Sandbox Code Playgroud)
并且,因为我需要覆盖其中一个表单字段,我将以下内容添加到formset基类:
class BaseAttendanceFormSet(BaseFormSet):
def add_fields(self, form, index):
super(BaseAttendanceFormSet, self).add_fields(form, index)
form.fields['client'] = forms.ModelChoiceField(
queryset=Client.objects.filter(user=2))
Run Code Online (Sandbox Code Playgroud)
现在,表单正常工作,但我需要将值传递给formset,以便我可以过滤基于当前用户显示的客户端,而不是仅使用id 2.
有人可以帮忙吗?
任何建议表示赞赏
谢谢.
编辑
对于任何读书的人来说,这对我有用:
def get_field_qs(field, **kwargs):
if field.name == 'client':
return forms.ModelChoiceField(queryset=Client.objects.filter(user=request.user))
return field.formfield(**kwargs)
Run Code Online (Sandbox Code Playgroud) 我有一个HTML表,我想使用带有一些基本javascript的选择框动态添加或删除行.
我不是同时添加单行,而是添加一组相似的行.例如,如果我已经有一个,然后添加另一个,结果将是这样的:
<tr>
<th colspan="2">Item 1</th>
</tr>
<tr>
<th>Title</th>
<td>X</td>
</tr>
<tr>
<th>Description</th>
<td>Y</td>
</tr>
<tr>
<th colspan="2">Item 2</th>
</tr>
<tr>
<th>Title</th>
<td>A</td>
</tr>
<tr>
<th>Description</th>
<td>B</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
要添加行,我使用的是jQuery的clone方法,所以我需要某种容器元素来绕过行组,但是,我尝试的所有内容(span,div等)导致HTML无效并且无法正常运行.
我设法让它工作的唯一方法是将每个设置作为一个单独的表,但这不是我想要的效果.
我能做些什么来解决这个问题吗?
我已经为Laravel 4安装了TwigBridge,我正在尝试调整一些我已经从Blade到Twig的模板.
我想在视图的顶部显示一些验证错误.
我在Blade中有以下内容(工作正常):
@if (isset($errors))
@foreach ($errors->all() as $error)
<p>{{ $error }}</p>
@endforeach
@endif
Run Code Online (Sandbox Code Playgroud)
我试图将它转换为Twig,但没有显示任何内容.
{% if errors %}
{% for error in errors %}
<p>{{ error }}</p>
{% endfor %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试:
{{ errors }}
Run Code Online (Sandbox Code Playgroud)
我确实得到了一些输出:
{"name":["名称字段是必填项."]}
为了让它发挥作用,我需要改变什么?
任何建议表示赞赏
谢谢
我一直在使用Laravel的路径参数迁移,如下所示:
Artisan::call('migrate', array('--path' => 'path/to/my/Migrations'));
Run Code Online (Sandbox Code Playgroud)
无论如何我可以用同样的方式运行种子命令吗?我有一些我想要使用的种子文件,但我不想同时运行它们.
任何建议表示赞赏
谢谢
我正在尝试创建一个简单的报告系统,它可以输出HTML或导出到Excel.我已经通过Codeigniter视图成功创建了一个HTML表,但我想知道是否有任何方法可以重新使用该视图来创建Excel导出,而不是手动执行,因为我必须更新每当我想对报告进行更改时,它会在两个地方出现.
任何建议表示赞赏
谢谢.
我使用SplitDateTimeWidget来覆盖模型表单中的字段.有没有办法将css类分配给由此创建的各个字段?
widgets = {
'my_field': SplitDateTimeWidget(),
}
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏
在我尝试了你的代码后Brandon:
如果我在没有通过attrs的情况下尝试它,我会得到:'NoneType'对象不可迭代
对于线attrs_dict = dict(attrs).
如果我确实包含了attrs,我得到:'tuple'对象没有属性'copy'
at /usr/local/lib/python2.6/dist-packages/django/forms/widgets.py in init,第147行
我正在使用 getattr 像这样动态访问模型的属性(假设 Student 模型有一个名为 name 的属性):
students = Student.objects.all()
property = 'name'
for student in students:
print getattr(student, property)
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是我想知道是否可以以相同的方式访问相关记录的属性,例如(假设每个学生都有一个相关组,其属性名为 title):
students = Student.objects.selected_related()
property = 'group.title'
for student in students:
print getattr(student, property)
Run Code Online (Sandbox Code Playgroud)
有了这个,我只是收到错误“学生没有属性 group.title”
有没有办法实现这一目标?
任何建议表示赞赏。
谢谢
我刚开始学习Symfony 2教程.我已经创建了一个包含用户类的包,并尝试按照说明设置登录过程.我想我差不多了,不过我现在正处于最后一关.
我已经设置了一个包:Dan\AuthBundle,它包含我的用户类和另一个包:Dan\HelloBundle,我想只允许登录用户访问.
我的security.yml文件如下:
security:
encoders:
Dan\AuthBundle\Entity\User: sha512
providers:
main:
entity: { class: Dan\AuthBundle\Entity\User, property: username }
administrators:
entity: { class: DanAuthBundle:User }
firewalls:
secured_area:
pattern: ^/*
form_login:
check_path: /login_check
login_path: /login
always_use_default_target_path: false
default_target_path: /hello
access_control:
- { path: ^/hello/.* }
Run Code Online (Sandbox Code Playgroud)
主要的routing.yml文件如下所示:
DanAuthBundle:
resource: "@DanAuthBundle/Resources/config/routing.yml"
prefix: /auth/
DanHelloBundle_homepage:
pattern: /hello/
defaults: { _controller: DanHelloBundle:Default:index }
login:
pattern: /login
defaults: {_controller: DanAuthBundle:Default:login }
login_check:
pattern: /login_check
Run Code Online (Sandbox Code Playgroud)
我已手动创建了几个用户类实例.
如果我尝试访问url/hello,我会正确地重定向到登录页面.如果我输入了错误的详细信息,我会在模板中收到正确的消息,但是,当我使用正确的详细信息登录时,我收到324(空响应)错误(此时,浏览器中显示的URL是login_check).
从阅读文档,我想我应该被重定向到我最初尝试访问的页面?
http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form
默认情况下,如果提交的凭据正确,则用户将被重定向到请求的原始页面(例如/ admin/foo).如果用户最初直接进入登录页面,他将被重定向到主页.这可以高度自定义,例如,您可以将用户重定向到特定的URL.
此外,如果我在输入正确的详细信息后尝试访问该页面,我将再次被重定向到登录页面.
任何人都可以看到我是否错过了任何明显的东西?
这是我的日志文件:
[2012-06-18 18:33:47] doctrine.DEBUG:SELECT t0.id AS …
我正在使用FPNTagBundle,我希望有一个文本字段来向实体添加标签,其工作方式与此网站上的标签相同.
我可以使用explode创建一个标签没有问题的新实体但是当我再次编辑实体时,我会在文本字段中得到类似的内容.
学说\ COMMON \收藏\的ArrayCollection @ 0000000062a07bb50000000047044868
有没有办法我可以预先用数组集合填充文本字段,以便显示所有标记,用空格分隔?
这是我目前在控制器中的内容:
public function editpageAction(Request $request, $id = NULL)
{
$em = $this->getDoctrine()->getEntityManager();
$tagManager = $this->get('fpn_tag.tag_manager');
$page = new Page();
if ( ! empty($id))
{
$page = $em->getRepository('ContentBundle:Page')->findOneById($id);
$tagManager->loadTagging($page);
}
$form = $this->createForm(new PageType(), $page);
if ($request->isMethod('POST'))
{
$form->bind($request);
if ($form->isValid())
{
$em = $this->getDoctrine()->getManager();
$em->persist($page);
$em->flush();
return $this->redirect($this->generateUrl('content_admin_list_sections'));
}
}
return $this->render('ContentBundle:Admin:page.html.twig', array('form' => $form->createView()));
}
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏
谢谢
我一直在阅读有关在Symfony 2中创建自定义选民的信息.根据这个页面,可以将一个对象传递给securitycontext的isGranted方法,我在自己的控制器中完成了这个方法:
$page = new Page();
if ( ! $securityContext->isGranted('CONTENT_CREATE', $page)) {
throw new AccessDeniedException('Fail');
}
Run Code Online (Sandbox Code Playgroud)
看起来像投票方法应该接受它,但是,当我在$ object参数上调用get_class而不是获取我的Page实体时,我得到:
Symfony的\分量\ HttpFoundation \请求
public function vote(TokenInterface $token, $object, array $attributes)
{
print_r(get_class($object)); die();
return VoterInterface::ACCESS_ABSTAIN;
}
Run Code Online (Sandbox Code Playgroud)
我的选民被定义为我的services.yml文件中的服务:
content_security.access.my_voter:
class: My\Bundle\Security\Authorization\Voter\MyVoter
arguments: ["@service_container"]
public: false
tags:
- { name: security.voter }
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
任何建议表示赞赏
谢谢
我有一组具有纬度和经度值的点,我正在尝试使用以下格式创建一个字符串,以便使用Gmaps API:
LatitudeX,LongitudeX|LatitudeY,LongitudeY
Run Code Online (Sandbox Code Playgroud)
最终的字符串将使用未知数量的lat long对构建.
我以前的经验是使用PHP,虽然我已经设法得到一些工作,但它看起来有点笨拙,我想知道是否有更多'pythonic'方式来实现结果.
这是我到目前为止所拥有的:
waypoints = ''
for point in points:
waypoints = waypoints+"%s,%s" % (point.latitude, point.longitude)+"|"
waypoints = waypoints[:-1]
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏
谢谢
我正在尝试创建接下来5个工作周的数组(周一至周五,今天除外).我知道世界各地的工作周各不相同,但这对我要做的事情并不重要.
因此,例如,如果今天是星期三,我想要当前星期四和星期五以及下一周的星期一,星期二和星期三的日期.
我认为这会奏效:
$dates = array();
for ($i = 1; $ < 6; $i ++)
{
$dates[] = date('Y-m-d', strtotime('+ '.$i.' weekday'));
}
Run Code Online (Sandbox Code Playgroud)
但是对于今天,它给了我:
任何建议表示赞赏
谢谢
我有以下表单类:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('existingfolder', 'entity', array(
'class' => 'ImageBundle:Folder',
'required' => false,
))
->add('folder', 'text', array('required' => false))
->add('file', 'file');
}
Run Code Online (Sandbox Code Playgroud)
如何设置验证,以便必须填写existingfolder或folder字段(但不是两者都填写)?
任何建议表示赞赏
谢谢.