小编J-a*_*u-s的帖子

多对多关系的内联表格集

按照Kevin Dias在本文中的说明,我尝试为两个相关模型生成一个表单.这似乎适用于一对多的关系,但是我遇到了使用多对多关系的问题.

以下是用户角色管理的一些示例代码:

#models.py
from django.db import models

class Role(models.Model): # for each role there can be multiple users
    role_name=models.CharField(max_length=20)

class User(models.Model): # each user can have multiple roles
    name=models.CharField(max_length=20)
    role=models.ManyToManyField(Role, through='UserRole')

class UserRole(models.Model): # table to store which user has which roles
    role=models.ForeignKey(Role)
    user=models.ForeignKey(User)

# forms.py
from django.forms import ModelForm
from django.forms.models import inlineformset_factory

from rightmanagement.models import Role, User

class UserForm(ModelForm):
    class Meta:
        model = User

RoleFormSet = inlineformset_factory(User, Role) # this is probably the line that …
Run Code Online (Sandbox Code Playgroud)

python django

6
推荐指数
1
解决办法
3008
查看次数

将未绑定的表单转换为绑定的表单?

我希望从对象获得绑定表单以使用is_valid方法.原因是我有一些旧数据,我希望用户根据新的验证规则进行更正.然后,我想在我的表单中重用clean方法的代码.

我最终序列化了我的回复:

from django.utils import simplejson
from django.core.serializers import serialize

(...)

fields_dict = simplejson.loads(serialize('json', [obj]))[0]['fields']
form = forms.MyForm(fields_dict)
if form.is_valid
Run Code Online (Sandbox Code Playgroud)

这可行,但它似乎不是很Djangish.此外,它似乎是一个常见的问题,所以我正在寻找一个更好的方法来做到这一点.

根据文档,从未绑定到未绑定的转换数据不会发生:https: //docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method 但是,这将是最简单的解决方案为了我.

django django-forms

5
推荐指数
1
解决办法
1620
查看次数

标签 统计

django ×2

django-forms ×1

python ×1