代码之家  ›  专栏  ›  技术社区  ›  Niladry Kar

Django:无法分配必须是实例

  •  -2
  • Niladry Kar  · 技术社区  · 7 年前

    我想把一个模型的非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
    

    有人能告诉我我的代码有什么不对吗???

    1 回复  |  直到 7 年前
        1
  •  2
  •   Burhan Khalid    7 年前

    Django中的外键需要分配一个对象,而不是一个值。错误告诉您您正在尝试分配 DateTime 值,其中它只接受 Selectdatefield

    既然你已经有了 选择日期字段 start_date 属性:

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