将配置文件连接到另一个模型 Django 的 m2m 形式

问题描述

我有一个连接到模型“配置文件”的多对多关系。这个想法是让每个用户都可以根据自己的需要选择尽可能多的 SDG,并在它们之间建立联系。但是,每当我保存此关系时,新对象都不会添加到数据库中,但不会创建错误。如果有人知道为什么会发生这种情况,那就太棒了。所以这是我的代码:

models.py

class Profile(models.Model):
    id = models.CharField(max_length=50,primary_key= True)
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    sdg = models.ManyToManyField(SDG,through="SDG_User")
    background_picture = models.ImageField(upload_to=profile_pic_directory_path,default="Null")
    profile_picture = models.ImageField(upload_to=profile_pic_directory_path,default="Null")


class SDG_User(models.Model):
    sdg = models.ForeignKey(SDG,on_delete=models.CASCADE)
    user_id = models.ForeignKey(Profile,on_delete=models.CASCADE)

class SDG(models.Model):
    title = models.CharField(max_length=50,unique=True)
    contenu = models.TextField(default="NA")
    image = models.ImageField(upload_to='sdgs/')

    def __str__(self):
        return '{} - {}'.format(self.title,self.contenu)

forms.py

class SDGForm(forms.ModelForm):
    sdg = forms.CheckboxSelectMultiple()
    class Meta:
        model = Profile
        fields = ('sdg',)

views.py

def edit_profile_sdgs(request):
    if request.method == 'POST':
        sdg_form = SDGForm(request.POST,instance=request.user)
        if sdg_form.is_valid():
            sdg = sdg_form.save(commit=False)
            sdg.user = request.user
            sdg.save()
            sdg_form.save_m2m()
            messages.success(request,'if')
            return redirect(reverse(("accounts:user_profile"),args=[request.user.username]))    

    else:
        sdg_form = SDGForm(instance=request.user)

    return render(request,'dist/inside/profile/edit/edit_sdg.html',{ 'sdg_form': sdg_form,})

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)