【发布时间】:2019-08-04 14:25:43
【问题描述】:
所以我对 Django 很陌生,我正在尝试保存模型 Ovelse 的新实例,它有一个指向另一个模型 Okt 的外键。我有一个视图,其中包含所有 Okt 实例的列表,该列表链接到连接到每个 Okt 的所有 Ovelse 实例。
模型.py
class Okt(models.Model):
def __str__(self):
return '{}, uke {}, dag {}'.format(self.sykel_navn, self.sykel_uke, self.sykel_dag)
sykel_navn = models.CharField(max_length=8, default="Sykel 1")
sykel_dag = models.CharField(max_length=(1), choices=(SYKEL_DAGER))
sykel_uke = models.CharField(max_length=(1), choices=(SYKEL_UKER))
dato = models.DateTimeField('Dato på treningsøkt: ')
notater = models.CharField(max_length=400)
class Ovelse(models.Model):
okt = models.ForeignKey(Okt, on_delete=models.CASCADE)
ovelse_type = models.CharField(max_length=2, choices=MUSKELGRUPPE_CHOICES)
ovelse_navn = models.CharField(max_length=20)
vekt = models.IntegerField(default=0, name='kg')
sets = models.PositiveIntegerField(default=2)
reps = models.PositiveIntegerField(default=2)
def __str__(self):
return self.ovelse_navn
views.py
class OvelseCreateView(generic.CreateView):
model = Ovelse
template_name = 'trening/add.html'
form_class = OvelseForm
def form_valid(self, form):
form.instance.okt = self.kwargs.get('pk')
return super(OvelseCreateView, self).form_valid(form)
forms.py
class OvelseForm(forms.ModelForm):
class Meta:
model = Ovelse
exclude = ['okt',]
fields = ['ovelse_navn', 'ovelse_type', 'kg', 'sets', 'reps']
def __init__(self, *args, **kwargs):
super(OvelseForm, self).__init__(*args, **kwargs)
self.fields['ovelse_type'].label = "Muskler brukt"
self.fields['ovelse_navn'].label = "Navn på øvelsen"
self.fields['kg'].label = "Antall kilo"
self.fields['sets'].label = "Antall set"
self.fields['reps'].label = "Antall reps"
当我尝试提交表单时,我收到错误消息:无法分配“1”:“Ovelse.okt”必须是“Okt”实例,而我希望创建实例的新模型。
【问题讨论】:
标签: django django-forms