2010-02-27 70 views
0

假設我有一個模型,並且它有一個外鍵給另一個。在Charfield中顯示django中外鍵的值,出錯

class ModelA(models.Model): 
    field = models.CharField(max_length=100) 

class ModelB(models.Model): 
    model_a = models.ForeignKey(ModelA) 

比我有這種形式:

class FormB(models.ModelForm): 
    model_a = forms.CharField(required=True) 

    def clean(self): 
     model_a = self.cleaned_data["model_a"] 
     try: 
      v = ModelA.objects.get(model_a=model_a) 
      self.cleaned_data["model_a"] = v 
     except Exception: 
      self._errors['model_a'] = ErrorList(["ModelA not found"]) 
    return self.cleaned_data 

現在,每當我在FormB輸入一個字符值,它會在MODELA搜索並 返回清理數據。

當我使用表單列出預先存在的實例時,它顯示了ID而不是值。

def my_view(request): 
    instance = ModelB.objects.get()[0] 
    form = FormB(instance=instance) 
    return render_to_response("bla.html", {"form" : form}) 

有沒有人知道我通過實例時如何顯示此CharField中的值?

感謝, 尼科

回答

0

我能想到的兩個選項:

  1. ModelB隱藏着editable=falsemodel_a場,並添加CharFieldModelB存儲用戶輸入的文本。然後在表單中顯示此字段,但使用其值填充model_a

  2. 使用自動填充字段,例如使用django-autocomplete。這允許用戶輸入對象的名稱,而不是使用select小部件。 (但是沒有JavaScript,可以回到select)。