微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在django中插入带有外键字段的modelForm数据?

如何解决如何在django中插入带有外键字段的modelForm数据?

我收到以下错误

无法分配“'3'”:“Issue.isbn”必须是“Book”实例。

这是我的模型,有两个外键属性

runtime: python39

handlers:
# This configures Google App Engine to serve the files in the app's static
# directory.
- url: /static
  static_dir: static/

# This handler routes all requests not caught above to your main app. It is
# required when static routes are defined,but can be omitted (along with
# the entire handlers section) when there are no static files defined.
- url: /.*
  script: auto

#Forms -----------------------------------

class IssueForm(forms.ModelForm):


    class Student(models.Model):
        id = models.OnetoOneField(User,on_delete=models.CASCADE,primary_key=True,verbose_name='ID')
        class_name = models.CharField(max_length=100)
        roll = models.CharField(max_length=100)
        section = models.CharField(max_length=100)
        shift = models.CharField(max_length=100)
        medium = models.CharField(max_length=100)
        session = models.CharField(max_length=100)
        sin = models.CharField(max_length=100)
        resident = models.CharField(max_length=100)
        hall = models.CharField(max_length=100)
        room = models.CharField(max_length=100)
    
        def __str__(self):
            return str(self.id.id)
    
        class Meta:
            managed = False
            db_table = 'student'
    
    
    @receiver(post_save,sender=User)
    def create_student(sender,instance,created,**kwargs):
        if created:
            Student.objects.create(id=instance)
        instance.student.save()
    
    
    class Book(models.Model):
        id = models.BigAutoField(primary_key=True,serialize=False,verbose_name='ID'),title = models.CharField(max_length=100)
        category = models.CharField(max_length=100)
        language = models.CharField(max_length=100)
        isbn = models.CharField(max_length=100,unique=True)
        author = models.CharField(max_length=100)
        publisher = models.CharField(max_length=100)
        edition = models.CharField(max_length=100)
        year = models.CharField(max_length=100)
        quantity = models.IntegerField()
        issued = models.IntegerField(null=True,blank=True)
        price = models.CharField(max_length=100)
        location = models.CharField(max_length=100)
        donated_by = models.CharField(max_length=100)
    
        def __str__(self):
            return "%s" % self.id
    
        class Meta:
            managed = False
            db_table = 'book'
    
    
    class Issue(models.Model):
        id = models.BigAutoField(primary_key=True,isbn = models.ForeignKey(Book,verbose_name='isbn_id')
        student = models.ForeignKey(Student,verbose_name='student_id')
        quantity = models.IntegerField()
        issued_date = models.DateField()
        return_date = models.DateField()
    
        # def __str__(self):
        #     return "%s" % (self.student)
    
        class Meta:
            managed = False
            db_table = 'issue'

我想插入一些数据 浏览量------------------------------

student = forms.CharField(
    widget=forms.TextInput(
        attrs={
            "placeholder": "student","class": "form-control"
        }
    ))

isbn = forms.CharField(
    widget=forms.TextInput(
        attrs={
            "placeholder": "isbn","class": "form-control"
        }
    ))

quantity = forms.IntegerField(initial=1,widget=forms.NumberInput(
                                  attrs={
                                      "placeholder": "quantity","class": "form-control"
                                  }
                              ))

issue_date = forms.DateField(initial=datetime.today(),disabled=True,widget=forms.DateInput(
    attrs={
        'type': 'date',"placeholder": "issue_date","class": "form-control"
    }
))

return_date = forms.DateField(
    widget=forms.DateInput(
        attrs={
            'type': 'date',"class": "form-control",}
    ))

class Meta:
    model = Issue
    fields = ('student','isbn','quantity','issue_date','return_date',)

请帮忙插入数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。