【问题标题】:How to get id from created object in Django如何从 Django 中创建的对象中获取 id
【发布时间】:2022-01-19 15:32:05
【问题描述】:

我有模型:GroupMembers。 Groups 有很多成员,但是当 Group 创建时,currentUser 自动变为 Member。 我在单个请求中完成所有操作,但在获取 id createdGroup 时遇到问题。

我的模型:

class Group(models.Model):
    groupName = models.CharField(max_length=100)
    description = models.CharField(max_length=255)
    inviteKey = models.UUIDField(default=uuid.uuid4,
                                 unique=True,
                                 editable=False)

class Members(models.Model):
    userId = models.ForeignKey(User, on_delete=models.CASCADE)
    groupId = models.ForeignKey(Group, on_delete=models.CASCADE)

表格:

class GroupForm(forms.ModelForm):
    groupName = forms.CharField(label='Name', max_length=100)
    description = forms.CharField(label='Description', max_length=255)
    inviteKey: forms.CharField(label='Invite Key')

    class Meta:
        model = Group
        fields = ['groupName', 'description']

查看:

def createGroup(request):
    if request.method == "POST":
        form = GroupForm(request.POST)
        if form.is_valid():
            form.save()
            currentUser = request.user
            print('group id', request.POST.get('id', ''))
            #after group creation i would add current member
            addMember(currentUser, True, True) # should be currentUser, createdGroup, True
            messages.success(request, f'Group created')
            return redirect('/')
    else:
        form = GroupForm()
        
    return render(request, 'group/createGroup.html',{'form': form})

如何获取新创建的Group 的id? 我尝试过这样的事情:

group = request.POST.get('id', '')

当我console.log(request.POST) 我得到的只是(名称,描述)

【问题讨论】:

    标签: python django django-models django-views django-forms


    【解决方案1】:

    试试这个:

    new_group = form.save()
    id = new_group.id
    

    id 是在您保存请求触发的表单时创建的...所以它不能在请求中!

    【讨论】:

      猜你喜欢
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 2011-08-05
      • 1970-01-01
      相关资源
      最近更新 更多