Джанго: Невозможно назначить должен быть экземпляр - PullRequest
0 голосов
/ 13 октября 2018

Я хочу получить не-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

Может кто-нибудь PLZ сказать мне, что я не так делаю в моем коде ???

1 Ответ

0 голосов
/ 13 октября 2018

Внешним ключам в Django должен быть присвоен объект, а не значение.Ошибка говорит вам, что вы пытаетесь присвоить значение DateTime полю, где оно принимает только объект Selectdatefield.

Поскольку у вас уже есть объект Selectdatefield со значением, присвойте егонапрямую, как вы делали для атрибута start_date:

form.instance.start_date = s
form.instance.end_date = s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...