2010-08-29 3 views
3

Как определить динамическое начальное значение в поле внешнего ключа?Django: Как определить динамическое начальное значение в поле модели ForeignKey

С кодом:

from django.db import models 
from django.conf import settings 
from django.contrib.sites.models import Site 

class Example(models.Model): 
    site = models.ForeignKey(Site, initial=settings.SITE_ID) 

Я следующее сообщение об ошибке:

site = models.ForeignKey(Site, initial=settings.SITE_ID) 
Field.__init__(self, **kwargs) 
TypeError: __init__() got an unexpected keyword argument 'initial' 

Я также попытался с:

class Example(models.Model): 
    site = models.ForeignKey(Site, initial=Site.objects.get(id=settings.SITE_ID)) 

Заранее спасибо

ответ

4

Поля модели не принимают «начальный» параметр, они принимают «по умолчанию».

+0

Правильно! Оглядываясь, я начал с Model.default и закончил Field.initial, и я их перепутал. Моя проблема была на самом деле в другом месте, но спасибо, в любом случае, вы помогли мне найти решение. Кажется, нельзя определить динамическое значение по умолчанию в новой модели, а затем выполнить syncdb. Поэтому мне пришлось удалить параметр по умолчанию, сделать syncdb, а затем добавить значение по умолчанию в модель. –

1

Override save() модели и проверьте, является ли значение поля None.

+0

Спасибо. Он мог бы выполнить эту работу, но я хочу показать значение по умолчанию в форме. –

0

Если я правильно Вас понял о динамической части, это связано с Django foreign key FAQ и Джеймса Беннетта Django tips: auto-populated fields (см Святой Грааль подзаголовок :-).

+0

Спасибо, но я не хочу, чтобы он автоматически заполнялся, я хочу, чтобы пользователи могли выбирать другое значение, чем значение по умолчанию. –

Смежные вопросы