在Djang中验证多个关系中的对象

2024-09-30 12:14:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模型GroupUser。我在Group引用User中有许多字段。我还有一个中间模型GroupUser,用于存储多对多关系的附加数据(分配日期和成员类型)。你知道吗

我有一个页面/groups/group-<group_id>/create-user/,在那里我向组中添加用户。我的问题是,如果将用户创建为类型1,则不能将其分配给其他组。如果已存在与特定用户和类型1的关系,如何验证该用户未分配给其他组?你知道吗

我用的是CreateView

class GroupUserCreateView(CreateView):
    model = GroupUser
    fields = ['user', 'type']
    template_name = "group_user_create_form.html"

    def dispatch(self, request, *args, **kwargs):
        self.group = get_object_or_404(Group, id=self.kwargs['group_id'])
        return super(GroupUserCreateView, self).dispatch(request, *args, **kwargs)

    def form_valid(self, form):
        form.instance.group = self.group
        return super(GroupUserCreateView, self).form_valid(form)

    def get_success_url(self):
        return reverse('group_user_list', kwargs={'group_id': self.group.id})

Tags: 用户模型selfformid类型returndef
1条回答
网友
1楼 · 发布于 2024-09-30 12:14:15

我不太了解CreateView,但是我猜,重写get_form并调整user字段上的queryset。你知道吗

def get_form(self, form_class):
    create_form = super(GroupUserCreateView, self).get_form(form_class)
    create_form.fields['user'].queryset = User.objects.exclude(groupuser__type=1)
    return create_form

相关问题 更多 >

    热门问题