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
之后,将modelLeave
中的值name
和employee_ID
存储到modelHistory
中。我是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)