2010-04-23 208 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