Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中将值从一个模型存储到另一个模型?_Python_Django - Fatal编程技术网

Python 如何在django中将值从一个模型存储到另一个模型?

Python 如何在django中将值从一个模型存储到另一个模型?,python,django,Python,Django,我只想在状态==1之后,将modelLeave中的值name和employee_ID存储到modelHistory中。我是django的新手,帮我解决这个问题。如果你想将一个模型与另一个模型关联,那么根据关联,你可以使用OneToOneField,ManyToManyField,ForeignKey等 这里您所做的是,您有一个模型Leave,其中包含employee\u ID、name和user 另一个模型是历史记录,带有字段员工ID,姓名,用户(从休假继承)和员工ID,全名。这只是扩展该模型类

我只想在
状态==1
之后,将model
Leave
中的值
name
employee_ID
存储到model
History
中。我是django的新手,帮我解决这个问题。

如果你想将一个模型与另一个模型关联,那么根据关联,你可以使用
OneToOneField
ManyToManyField
ForeignKey

这里您所做的是,您有一个模型
Leave
,其中包含
employee\u ID
name
user

另一个模型是
历史记录
,带有字段
员工ID
姓名
用户
(从休假继承)和
员工ID
全名
。这只是扩展该模型类并创建新的模型对象。这两个问题只会毫无关联。(我没有足够的经验告诉你确切/详细的行为)

所以,对于您的情况,您可以从历史模型中获得一个
OneToOneField
(或者基于您的业务逻辑的其他东西),以保留类似这样的模型

CHOICES = (('Earned Leave','Earned Leave'),('Casual Leave','Casual Leave'),('Sick Leave','Sick Leave'),('Paid Leave','Paid Leave'))
STATUS_CHOICES = (('0', 'Rejected'),('1', 'Accepted'),)

class Leave(models.Model):

    employee_ID = models.CharField(max_length = 20)
    name = models.CharField(max_length = 50)
    user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)
    type_of_leave = models.CharField(max_length = 15, choices = CHOICES)
    from_date = models.DateField()
    to_date = models.DateField()
    status = models.CharField(max_length = 15, choices = STATUS_CHOICES)

class History(models.Model):

    name = models.CharField(max_length = 50)
    employee_ID = models.CharField(max_length = 20)
    earned_leave = models.IntegerField()
    casual_leave = models.IntegerField()
    sick_leave = models.IntegerField()
    paid_leave =models.IntegerField()

    def __str__(self):
        return self.name
然后,您可以按如下方式保存数据:

class Leave(models.Model):
    employee_ID = models.CharField(max_length = 20)
    name = models.CharField(max_length = 50)
    user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)


class History(models.Model):
    emp_ID = models.CharField(('employee ID'),max_length = 25)
    full_name = models.CharField(('Name'),max_length = 40)
    leave = models.OneToOneField(Leave, on_delete = models.SET_NULL)
我假设您也有休假开始和结束
datetime
字段。我认为您还应该研究为什么两种模型中都重复使用员工ID


如果您有任何疑问/疑问,请告诉我。谢谢~

我只想用休假模型字段自动填充历史模型,尽管我在休假模型中有许多字段。我只想将这三个字段填充到历史记录中。您是如何插入值的?是否在历史模型对象中指定了休假值?
# I am assuming you're inside some view and you want to create leave for the user who is logged in, refactor based on your requirements
leave = Leave.objects.create(employee_ID="EMPLOYEEID", name="EMPLOYEENAME", user=request.user)
# here pass the leave that we have created previously
history = History.objects.create(emp_ID="EMPLOYEEID", full_name="EMPLOYEEFULLNAME", leave=leave)