Django Modelform - установка значения поля для внешнего ключа - PullRequest
0 голосов
/ 09 июля 2019

Я создал две модели в своем приложении: «Предписание» и «Prescription_status». Когда пользователь нажимает «Сохранить» на форме модели «New_prescription», мне нужно добавить «Prescription_status» в «Prescription».

Например, ниже я бы хотел добавить статус «Черновик» (PK = 1). Я не хочу устанавливать статус по умолчанию. Я пытался все, что я скучаю ?? Заранее спасибо!

models.py

# Static Prescription Status Types
class Prescription_status(models.Model):
    status = models.CharField(max_length=200)
    status_definition = models.TextField()

    def __str__(self):
        return '%s' % (self.status)

# Prescription Model
class Prescription(models.Model):
    order_id = models.AutoField(primary_key=True, unique=True)
    status = models.ForeignKey(Prescription_status, models.SET_NULL, null=True)

Я сохранил следующие объекты Prescription_status в базе данных, на которые я хотел бы сослаться, когда пользователи сохраняют или редактируют рецепты:
status_id для статуса «Черновик» = 1
status_id для статуса «Готов к подписанию» = 2
status_id для статуса «Подписано и авторизовано» = 3

диаграмма базы данных, показывающая PK для каждого статуса

forms.py

class PrescriptionForm(forms.ModelForm):
    class Meta:
        model = Prescription
        fields = ('medication', 'quantity', 'directions', 'refills', 'earliest_permitted_fill_date', 'daw',)
        widgets = {
             'earliest_permitted_fill_date': DatePickerInput(), # default date-format %m/%d/%Y will be used

     }

views.py

def new_rx(request):
    if request.method == "POST":
        form = PrescriptionForm(request.POST)
        if form.is_valid():
            prescription = form.save(commit=False)
            prescription.status = Prescription_status.objects.get(pk=form.cleaned_data['1'])
            prescription.save()
            return redirect('home')
    else:
        form = PrescriptionForm()
    return render(request, 'app/new_rx.html', {'form': form})

Вышеуказанное приводит к «Ошибка имени: имя« Prescription_status »не определено». Как правильно это сделать?

...