Django Modelform将字段值设置为外键

2024-05-16 12:47:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的应用程序中创建了两个模型:“处方”和“处方状态”。当用户单击“新处方”模型窗体上的“保存”时,我需要在“处方”中添加“处方状态”

例如,下面我想添加“草稿”状态(PK=1)。我不想设置默认状态。我什么都试过了,还缺什么??提前谢谢!你知道吗

你知道吗型号.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)

我将以下处方状态对象保存到数据库中,在用户保存或编辑处方时,我要引用这些对象:
“草稿”状态的状态标识=1
“准备签字”状态的状态\u id=2
“已签署并授权”状态的状态标识=3

database chart showing PK for each status

你知道吗表单.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

     }

你知道吗视图.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})

上面的结果是“NameError:name'Prescription\u status'未定义”。正确的方法是什么?你知道吗


Tags: pyformtruedatemodelreturnmodelsrequest