下面是我的模型
class Seminar(models.Model):
seminarID = models.AutoField(primary_key=True)
presenter_name = models.CharField(max_length=200)
location_name = models.TextField()
seminar_DT = models.DateTimeField(default=datetime.datetime.now)
capacity = models.IntegerField(default=50)
class Registration(models.Model):
registration_ID = models.AutoField(primary_key=True)
seminar=models.ForeignKey(Seminar,to_field='seminarID',on_delete=models.CASCADE)
attendee_name = models.CharField(max_length=200,null=True)
email_address = models.EmailField()
email_sent = models.BooleanField(default=False)
这是我为注册模型创建的ModelForm
class RegistrationForm(forms.ModelForm):
class Meta:
model = Registration
widgets = {
"registration_ID": forms.NumberInput(attrs={'required': "required"}),
"seminar": forms.SelectMultiple(attrs={'required': "required"}),
"attendee_name": forms.TextInput(attrs={'required': "required"}),
"email_address": forms.TextInput(attrs={'required': "required"}),
"email_sent": forms.NullBooleanSelect(attrs={'required': "required"}),
}
fields = ('seminar','attendee_name','email_address','email_sent')
当我在模板上运行上面的RegistrationForm时,出现以下窗口
Image of the Registration ModelForm
研讨会字段,在注册模型中定义为ForeignKey,并指研讨会模型中的workshopID。研讨会以预先填写的注册表显示,可以,但是显示为研讨会对象(2),研讨会对象(3)... 研讨会模型中的workshopID也是AutoField和Primarykey。
当我保存RegistrationForm时,我的postgresql数据库不会使用新值和选定的Seminar对象(*)进行更新。请指教
研讨会表和注册表的快照均在以下链接中给出: image of seminar table 和 image of registration table
答案 0 :(得分:0)
您必须在Registration类中添加一个__str__()
方法(对于Django 3.X)。如果您使用的是Django 2.X,请添加相应的方法__unicode__(self)
。如下所述:
def __unicode__(self): return "%s (%s)"%(self.presenter_name, datetime.datetime.strftime(self.seminar_DT, "%Y-%m-%d %H:%M "))
这是告诉Django哪个是Registration对象的字符串表示形式。需要信息才能将对象表示呈现到小部件中。 还请检查Django documentation。