utilisateur/models.pyDjango - relation entre ManyToMany User.Profile et un autre modèle, ValueError: Impossible d'ajouter
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Bread(models.Model):
title = models.CharField(max_length=40)
def __str__(self):
return self.title
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
location = models.CharField(max_length=30, blank=True)
birth_date = models.DateField(null=True, blank=True)
picture = models.ImageField(upload_to="photos/", default="photos/none/default.png")
bread = models.ManyToManyField(Bread)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
J'essaie d'ajouter un objet simple modèle de profil, mais il ne fonctionne pas.
>>> from user.models import Bread
>>> from user.models import Profile
>>> from django.contrib.auth.models import User
>>> p1 = Bread(title="Example")
>>> p1.save()
>>> Profile(User).bread.add(p1)
ValueError: Cannot add "<Bread: Example>": instance is on database "None", value is on database "default"
>>> u1 = Profile(User)
>>> u1.save()
TypeError: _prepare() takes 1 positional argument but 2 were given
Voir des questions similaires précédentes, j'ai essayé de sauver le modèle de profil, comme u peut voir, je sais que lié avec l'utilisateur et sa carte d'identité, mais je ne sais pas comment résoudre facilement