3

次の Django モデルを検討してください。

class Host(models.Model):
    # This is the hostname only
    name = models.CharField(max_length=255)

class Url(models.Model):
    # The complete url
    url = models.CharField(max_length=255, db_index=True, unique=True)
    # A foreign key identifying the host of this url 
    # (e.g. for http://www.example.com/index.html it will
    # point to a record in Host containing 'www.example.com'
    host = models.ForeignKey(Host, db_index=True)

私もこのフォームを持っています:

class UrlForm(forms.ModelForm):
    class Meta:
        model = Urls

問題は次のとおりです。ホスト フィールドの値を自動的に計算したいので、Web ページに表示される HTML フォームに表示したくありません。

「除外」を使用してフォームからこのフィールドを省略した場合、フォームを使用してデータベースに情報を保存するにはどうすればよいですか (ホスト フィールドが存在する必要があります)。

4

2 に答える 2

3

使用commit=False:

result = form.save(commit=False)
result.host = calculate_the_host_from(result)
result.save()
于 2009-10-29T11:59:20.727 に答える
1

除外を使用してから、フォームの「クリーン」メソッドで必要なものを設定できます。

だからあなたの形で:

class myform(models.ModelForm):
   class Meta:
       model=Urls
       exclude= ("field_name")
   def clean(self):
      self.cleaned_data["field_name"] = "whatever"
      return self.cleaned_data
于 2009-10-29T11:50:17.060 に答える