#python #django #forms #m2m
Вопрос:
У меня есть отношения «многие ко многим», которые связаны с моделью «профиль». Идея состоит в том, чтобы позволить каждому пользователю выбрать столько ЦУР, сколько он хочет, и создать связь между ними. Однако всякий раз, когда я сохраняю это отношение, новый объект не добавляется в базу данных, но никаких ошибок не создается. В случае, если у кого-то есть идея, почему это происходит, это было бы потрясающе. Итак, вот мой код:
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,
})
Комментарии:
1. Вы работаете с
instance=request.user
, но это похоже наUser
объект, а не наProfile
.