Джанго 1.1 формы, модели и скрытые поля - PullRequest
3 голосов
/ 29 октября 2009

Рассмотрим следующие модели 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

Проблема в следующем: я хочу автоматически вычислить значение поля хоста, поэтому я не хочу, чтобы он отображался в форме HTML, отображаемой на веб-странице.

Если я использую «исключить», чтобы пропустить это поле из формы, как я могу использовать форму для сохранения информации в базе данных (которая требует наличия поля хоста)?

Ответы [ 2 ]

3 голосов
/ 29 октября 2009

Использование commit=False:

result = form.save(commit=False)
result.host = calculate_the_host_from(result)
result.save()
1 голос
/ 29 октября 2009

Вы можете использовать исключение, а затем в формах «чистый» метод установить все, что вы хотите.

Итак, в вашей форме:

class myform(models.ModelForm):
   class Meta:
       model=Urls
       exclude= ("field_name")
   def clean(self):
      self.cleaned_data["field_name"] = "whatever"
      return self.cleaned_data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...