用戶/ models.pyDjango的 - User.Profile和另一種模式,ValueError異常之間的多對多關係:不能添加
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()
我嘗試添加一個簡單的對象剖面模型,但它不工作。
>>> 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
看到我試圖挽救剖面模型類似前面的問題,就像你看到的,我知道它與用戶和他的ID相關的,但我不知道如何來解決它