将配置文件连接到另一个模型 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...