如何从另一个模型自动创建一个模型?

问题描述

每当用户进行新的预订时,我都希望使用预订类中的“ first_name”,“ last_name”和“ email”字段自动创建个人资料。

models.py

from django.db import models
from django.db.models.signals import post_save

class Reservation(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    email = models.EmailField()
    address = models.CharField(max_length=50)
    check_in = models.DateField()
    check_out = models.DateField()
    num_guest = models.IntegerField()

    reason = (
    ('Birthday','Birthday'),('Anniversary','Anniversary'),('Get Away From Kids','Get Away From Kids'),('Vacation','Vacation'),('Treating Myself','Treating Myself'),('Leave Blank','Leave Blank'),)

    opt = models.CharField(max_length=120,choices = reason)

    def __str__(self):
        return "%s %s" % (self.first_name,self.last_name)

class Profile(models.Model):

    guest = models.ForeignKey(Reservation,on_delete=models.CASCADE)

    def __str__(self):
        return "%s" % (self.guest)

def create_profile(sender,instance,created,**kwargs):
        post_save.connect(create_profile,sender=Reservation)

我正在尝试不修改Reservation类,因为我需要将字段作为ModelForm。

编码新手,感谢您的指导!

解决方法

这是abstract base classes的用途,我相信。虽然不确定一致性,但是您仍然可以将外键存储到保留中。另外,您可以在Profile中定义一个@property并手动检索数据(根据此问题:Django queryset with Model method containing another queryset)。