我想像這樣將許多藥物保存到個人資料中。
模型.py
class Profile(AbstractUser):
class Medications(models.Model):
user = models.ForeignKey(Profile,related_name='user',on_delete=models.CASCADE)
name = models.CharField(default='',max_length=100)
amount = models.IntegerField()
per_time = models.IntegerField()
time_choices = (('other', 'Other'),('Post meal', 'Post meal'),('Breakfast' ,'Breakfast'))
choice = models.CharField(max_length=10, choices=time_choices,default='others')
表格.py
class MedicationForm(forms.ModelForm):
name = forms.CharField(max_length=100, required=True, help_text='Required.')
amount = forms.IntegerField( required=True, help_text='Required.')
class Meta:
model = Medications
fields = ('name','amount','per_time','choice')
現在在這里我想用請求用戶創建一個藥物。我使用了 if form.is_valid(): form.save() ,它只在 /addMed/ NOT NULL 約束處??給出 IntegrityError failed: pages_medications.user_id 需要來自 request.user
@login_required
@require_http_methods(["POST"])
def addMed(request):
print('Adding med')
print(request.user)
print(request.POST)
med = MedicationForm(request.POST or None,)
print(med)
return redirect('medications')
這使
Adding med
user
<QueryDict: {'csrfmiddlewaretoken': ['-'], 'name': ['Tylenol'], 'amount': ['1'], 'per_time': ['1'], 'choice': ['other'], 'medicationForm': ['Upload']}>
然后在這里列出所有藥物。
視圖.py
@login_required
def medications(request):
context={}
context['nmenu'] = 'medications'
context['medicationForm'] = MedicationForm()
return render(request, 'home.html', context)
uj5u.com熱心網友回復:
您應該將登錄用戶分配給Medications物件:
@login_required
@require_http_methods(['POST'])
def addMed(request):
med = MedicationForm(request.POST, request.FILES)
med.instance.user = request.user
med.save()
return redirect('medications')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417350.html
標籤:
