2016-01-11 2 views
2

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

Это то, что я использую, чтобы выбрать, какой цвет назначить каждому новому заданию.

cur_jobs = Job.objects.filter(enddate__gte=(datetime.date.today()-timedelta(days=7))) 
    all_colors = Color.objects.all() 
    cur_colors = [] 
    for i in cur_jobs: 
    cur_colors.append(i.color) 
    aval_colors = [x for x in all_colors if x not in cur_colors] 
    choice = random.choice(aval_colors) 

Это мои модели:

class Job(models.Model): 
    ---other stuff--- 
    jobnum = models.CharField("Job Number",max_length=6, blank=False,unique=True,error_messages={'unique':'This Job Number is already taken! =)'}) 
    color = models.ForeignKey('Color') 

class Color(models.Model): 
    color = models.CharField(max_length=20, blank=False) 

    def natural_key(self): 
     return (self.color) 

    def __str__(self): #python 3.3. is __str__ 
     return self.color 

Как я могу choice и представить его в качестве color с экземпляром jobform?

Форма работы:

class LimitedJobForm(forms.ModelForm): 
jobnum = forms.CharField(label='Job Number') 
class Meta: 
    model = Job 
    fields = ['jobnum','color','client','status'] 
+0

Где экземпляр «jobform»? – gtlambert

+0

@ lambo477 добавлено –

ответ

1

Если вы хотите color быть автоматически установлен, и если вы даже не хотите, чтобы она будет отображаться пользователю, не ставьте его в виде:

class LimitedJobForm(forms.ModelForm): 

    jobnum = forms.CharField(label='Job Number') 

    class Meta: 
     model = Job 
     fields = ['jobnum', 'client', 'status'] # no 'color' field 

Вместо этого установите цвет непосредственно на экземпляре модели в вашей точки зрения, после проверки формы и перед сохранением:

form = LimitedJobForm(request.POST) 

if form.is_valid(): 
    form.instance.color = pick_random_color() 
    form.save() 
+0

Спасибо, я подумал, что это было просто так. –

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