在Django中动态连接两个模型

假设我有两个如下模型:

class Client(models.Model):
    login = models.CharField(max_length=100)
    password = models.CharField(max_length=100)

class Users(models.Model):
    user_login = models.CharField(max_length=100)
    user_pass = models.CharField(max_length=100)

一个模型[用户]充满数据,第二个[客户端]空。首先,我可以根据用户填充客户端。现在,所有Django数据更改将仅保留在客户端模型上。

问题:

如何动态连接这两个模型字段?例如,如果在模型客户端上更改了某些数据,则在用户模型上也会更改相应的数据。

解决方案建议:

我可以更新或填充客户端数据,同时更新或填充用户数据。还有其他解决方案吗?

microwebhk 回答:在Django中动态连接两个模型

如果登录名是唯一的,则无需维护外键关系,您可以在两个模型中覆盖save()方法,否则您必须维护外键关系并覆盖保存()方法。

,

借助this post,我设法用下面的代码链接两个模型:

class Client(models.Model):
    login = models.CharField(max_length=100)
    password = models.CharField(max_length=100)

    # save previous instance
    def __init__(self,*args,**kwargs):
        super(Invoice,self).__init__(*args,**kwargs)
        self.original_login = self.login

    # override save method to update another model fields
    def save(self,**kwargs):
        # import in place to avoid circular imports
        from app.models import Users

        if self.login != self.original_login:
            Users.objects.filter(id=self.id).update(user_login=self.login)

        # save changed data on Client model
        super(Client,self).save(*args,**kwargs)

相同的方法用于用户模型。 请注意,这两个模型位于不同的应用程序中。

本文链接:https://www.f2er.com/3074092.html

大家都在问