我想使用Django创建和保存模型实例。这些是我的模型:
class Customer(models.Model):
id = models.IntegerField(primary_key=True, unique=True)
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
...
class Order(models.Model):
id = models.IntegerField(primary_key=True, unique=True)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
comment = models.TextField()
...
我创建这样的订单:
def store_storage_space_order(cleaned_data):
try:
user = User.objects.create_user(
cleaned_data["customer_email"],
cleaned_data["customer_email"],
1234
)
customer = Customer.objects.create(
user=user,
first_name=cleaned_data["customer_firstname"],
last_name=cleaned_data["customer_lastname"],
email=cleaned_data["customer_email"],
phone_number=cleaned_data["customer_phone"]
)
StorageSpaceOrder.objects.create(
customer=customer,
order_price=Decimal(cleaned_data["order_price"])
)
except Exception as exc:
logger.exception("Couldn't store any order information", exc, cleaned_data)
据我了解,Django也会在调用create时保存该对象。
尝试保存订单时,出现以下错误消息:
save() prohibited to prevent data loss due to unsaved related customer
我没有得到的 客户已经在那里并保存在数据库中。两者之间的客户没有任何变化。
另外,我尝试过customer_id=customer.id/pk,
-但是ID和PK都返回None。
为什么会这样,我需要更改什么?再次加载对象不是首选方法,因为我只有将其标记为唯一的ID。
感谢您的输入 :)
ID字段必须由Django自动生成,因此您无需在模型中声明它们。
如果这样做,您将覆盖创建/保存此模型的实例时调用的默认行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句