2010-04-23 211 views
1

我有一个模型“测试”,其中我有2个外键Django模型对象过滤

models.py
class Test(models.Model): 
    id =models.Autofield(primary_key=True) 
    name=models.ForeignKey(model2) 
    login=models.ForeignKey(model1) 
    status=models.CharField(max_length=200) 



class model1(models.Model): 
    id=models.CharField(primary_key=True) 
    . 
    . 

    is_active=models.IntergerField() 


class model2(model.Model): 
    id=models.ForeignKey(model1) 
    . 

    . 
    status=model.CharField(max_length=200) 

当我在模型“测试”添加对象时,如果我选择特定的登录那么只有与该对象相关的对象(model2)应显示在'name'字段中。我可以如何实现这一点。这将是运行时,就像我更改登录字段值,名称中的对象也应该更改。

回答

1

覆盖类的保存方法测试。 所以你可以设置名称根据登录你想要的一切。

class Test(models.Model): 
    . 
    . 
    def save(self, force_insert=False, force_update=False): 
     self.name = self.login.model_set()[0] # or what ever you want 
     super(Test, self).save(force_insert, force_update) 
+0

可能你应该改变你的模型定义。为什么你需要name = models.ForeignKey(model2)?这不是一个多余的信息吗? – maersu 2010-04-23 15:17:06

+0

我需要一个运行时更改名称value.I认为我需要使用jQuery才能做到这一点。没有其他方式为此。首先我只会显示登录字段,当用户选择登录字段时,我会做ajax调用和只根据它填充名称字段。 – ha22109 2010-04-28 05:12:40