我正在开发一个小型 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 回答
![?](http://img1.sycdn.imooc.com/5f33c0c90001f9ad05720572-100-100.jpg)
白衣非少年
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)
添加回答
举报
0/150
提交
取消