Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:无法分配必须是实例_Python_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Python Django:无法分配必须是实例

Python Django:无法分配必须是实例,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我想将一个模型的非str对象提取到另一个模型中 这是我的模型: class Selectdatefield(models.Model): User = models.OneToOneField(settings.AUTH_USER_MODEL,related_name="Users",on_delete=models.CASCADE,null=True,blank=True) Start_Date = models.DateField(blank=True, nu

我想将一个模型的非str对象提取到另一个模型中

这是我的模型:

class Selectdatefield(models.Model):
     User       = models.OneToOneField(settings.AUTH_USER_MODEL,related_name="Users",on_delete=models.CASCADE,null=True,blank=True)
     Start_Date = models.DateField(blank=True, null=True)
     End_Date   = models.DateField(blank=True, null=True)

class Journal(models.Model):
     User       = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
     company    = models.ForeignKey(Company,on_delete=models.CASCADE,null=True,blank=True,related_name='Companyname')
     start_date = models.ForeignKey(Selectdatefield,on_delete=models.CASCADE,null=True,blank=True,related_name='startdate')
     end_date   = models.ForeignKey(Selectdatefield,on_delete=models.CASCADE,null=True,blank=True,related_name='enddate')
     Date       = models.DateField()
     By         = models.ForeignKey(Ledger1,on_delete=models.CASCADE,related_name='Debitledgers')
     To         = models.ForeignKey(Ledger1,on_delete=models.CASCADE,related_name='Creditledgers')
     Debit      = models.DecimalField(max_digits=10,decimal_places=2)
     Credit     = models.DecimalField(max_digits=10,decimal_places=2)
我已在我的日记创建视图中尝试过:

  class journalCreateView(LoginRequiredMixin,CreateView):
        model = journal
        form_class  = journalForm

        def form_valid(self, form):
              form.instance.User = self.request.user
              c = company.objects.get(pk=self.kwargs['pk'])
              form.instance.Company = c
              s = selectdatefield.objects.get(pk=self.kwargs['pk3'])
              form.instance.start_date = s
              form.instance.end_date = s.End_Date
              return super(journalCreateView, self).form_valid(form)
当提交日记表单时,我想在我的日记模型中自动获取selectdate的结束日期

但是得到这个错误:

ValueError: Cannot assign "datetime.date(2018, 10, 6)": "journal.end_date" must be a "selectdatefield" instance.
错误在这一行代码中:

form.instance.end_date = s.End_Date

有人能告诉我我的代码出了什么问题吗?

Django中的外键需要分配一个对象,而不是一个值。该错误告诉您,您正试图将
DateTime
值分配给一个字段,该字段只接受
Selectdatefield
对象

由于您已经有了一个带有值的
Selectdatefield
对象,请直接分配它,就像您对
start\u date
属性所做的那样:

form.instance.start_date = s
form.instance.end_date = s

s、 End_Date不是一个实例,它的日期您需要传递一个像s这样的实例,在这种情况下,您不需要日志中的两个seprate字段替换为一个外键,如某些_Date=models.ForeignKey(Selectdatefield,on_delete=models.CASCADE,null=True,blank=True,related_name='startdate')