Py学习  »  Django

获取要用作外键的模型的实例,以将数据添加到Django中的其他模型

Developer P • 4 年前 • 251 次点击  

我有一个关系模型,它映射了两个模型,这两个模型是我的用户 position 如前所述在这里 Emp_position 是那种关系模式。

class Position(models.Model):
    position_name = models.CharField(max_length=20, unique=True)
    def __str__(self):
        return self.position_name


class Emp_position(models.Model):

    emp_uname = models.OneToOneField(User, related_name='emp_name', to_field='username', on_delete=models.CASCADE)
    position_name = models.ForeignKey(Position, related_name='position', to_field='position_name', on_delete=models.CASCADE)

    def __str__(self):
        return str(self.emp_uname) + " " + str(self.position_name)

现在要向Emp_position插入数据,我需要用户和位置的实例我可以使用 user.username 但我如何得到位置的实例在position实例中,我使用filter函数使用一些逻辑推导如何获取实例哪个函数帮助我使用某些条件获取实例。

以下是我尝试过的:

emp_pos = Emp_position(emp_uname = user, position_name = Position.objects.filter(position_name="COMES FROM LOGIC").first())
emp_pos.save()

但这并不是拯救模型。

编辑: 如评论部分所述

emp_pos = Emp_position(emp_uname = user, position_name = Position.objects.filter(position_name=NewProvisionalEmployeeMail.objects.filter(email="bhatnagarpulkitpb@gmail.com").values_list('position_name')).first())
emp_pos.save() 
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49223
 
251 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Himanshu Poddar
Reply   •   1 楼
Himanshu Poddar    4 年前

不管你在做什么,比如过滤数据库会给你一个查询集,你需要这个实例有两个过滤器,那么还必须有两个first()才能获取实例做这个。

emp_pos = Emp_position(emp_uname = user, position_name = Position.objects.filter(position_name=Position.objects.filter(position_name="COMES FROM LOGIC THAT DERIVES THE FIELD NAME").first()[0]).first())
emp_pos.save()

第一次 first 获取第二个实例的第一个实例 filter 第二个是第一个 滤波器 .

注意:任何模型的实例都可以通过使用filter然后使用first()函数来获得这些对于填充关系表或指定外键非常有用,因为它需要我们链接到的另一个模型的实例如果有其他方法,请有人在评论中指出。