亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

UNIQUE 約束失?。篻roups_groupmember.group_id

UNIQUE 約束失?。篻roups_groupmember.group_id

郎朗坤 2023-10-06 19:24:49
我正在開發一個小型 django 項目,為此我創建了一項功能,允許用戶創建然后加入該組。現在,問題來了:每當我離開小組并嘗試重新加入它時,它都會顯示我在問題中提到的錯誤“唯一約束失?。篻roups_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 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號