为了账号安全,请及时绑定邮箱和手机立即绑定

UNIQUE 约束失败:groups_groupmember.group_id

UNIQUE 约束失败:groups_groupmember.group_id

郎朗坤 2023-10-06 19:24:49
我正在开发一个小型 django 项目,为此我创建了一项功能,允许用户创建然后加入该组。现在,问题来了:每当我离开小组并尝试重新加入它时,它都会显示我在问题中提到的错误“唯一约束失败:groups_groupmember.group_id,groups_groupmember.user_id”这是我的加入课程:class JoinGroup(LoginRequiredMixin, generic.RedirectView):    def get_redirect_url(self, *args, **kwargs):        return reverse('groups:single', kwargs={'slug': self.kwargs.get('slug')})    def get(self, request, *args, **kwargs):        group = get_object_or_404(Group, slug=self.kwargs.get('slug'))        from sqlite3 import IntegrityError        try:            # GroupMember.objects.create(group=group)            GroupMember.objects.create(user=self.request.user, group=group)        except IntegrityError:            messages.warning(self.request, 'already a member!')        else:            messages.success(self.request, 'You are now a member!')        return super().get(request, *args, **kwargs)这是我的models.pyfrom django.db import modelsfrom django.utils.text import slugifyfrom django.urls import reverse# Create your models here.# GROUPS MODELS.PYimport markdownfrom django.contrib.auth import get_user_model  # returns user model that currently active in this projectUser = get_user_model()from django import templateregister = template.Library()class Group(models.Model):    name = models.CharField(max_length=256, unique=True)    slug = models.SlugField(allow_unicode=True, unique=True)    description = models.TextField(blank=True, default='')    description_html = models.TextField(editable=False, default='', blank=True)    members = models.ManyToManyField(User, through='GroupMember')    def __str__(self):        return self.name    def save(self, *args, **kwargs):        self.slug = slugify(self.name)        self.description_html = markdown.markdown(self.description)        super().save(*args, **kwargs)    def get_absolute_url(self):        return reverse('groups:single', kwargs={'slug': self.slug})    class Meta:        ordering = ['name']你能帮我解决这个问题吗?谢谢 !:)
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

使用怎么样get_or_create


class JoinGroup(LoginRequiredMixin, generic.RedirectView):

    def get_redirect_url(self, *args, **kwargs):

        return reverse('groups:single', kwargs={'slug': self.kwargs.get('slug')})


    def get(self, request, *args, **kwargs):

        group = get_object_or_404(Group, slug=self.kwargs.get('slug'))

        _, created = GroupMember.objects.create(user=request.user, group=group)

        if not created:

            messages.warning(request, 'already a member!')

        else:

            messages.success(request, 'You are now a member!')

        return super().get(request, *args, **kwargs)


查看完整回答
反对 回复 2023-10-06
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信