Django не может назначить должен быть экземпляром
Я пытаюсь вставить элемент. но он выбрасывает
`Cannot assign "'2003-221'": "ClearanceItem.recorded_by" must be a "ClearanceCustomuser" instance.`
models.py
class ClearanceItem(models.Model):
cl_itemid = models.CharField(primary_key=True, max_length=20)
studid = models.CharField(max_length=9, blank=True, null=True)
office = models.ForeignKey('ClearingOffice', models.DO_NOTHING, blank=True, null=True)
sem = models.CharField(max_length=1, blank=True, null=True)
sy = models.CharField(max_length=9, blank=True, null=True)
remarks = models.TextField(blank=True, null=True)
resolution = models.TextField(blank=True, null=True)
resolve = models.BooleanField(blank=True, null=True)
resolve_date = models.DateField(blank=True, null=True)
resolve_by = models.CharField(max_length=8, blank=True, null=True)
recorded_by = models.ForeignKey('ClearanceCustomuser', models.DO_NOTHING,
db_column='recorded_by', blank=True,
null=True)
record_date = models.DateField(default=datetime.now, blank=True, null=True)
class Meta:
managed = False
db_table = 'clearance_item'
class ClearanceCustomuser(models.Model):
password = models.CharField(max_length=128)
last_login = models.DateTimeField(blank=True, null=True)
is_superuser = models.BooleanField()
userid = models.CharField(primary_key=True, max_length=9)
email = models.CharField(unique=True, max_length=254)
is_staff = models.BooleanField()
is_active = models.BooleanField()
date_joined = models.DateTimeField()
class Meta:
managed = False
db_table = 'clearance_customuser'
views.py
class Add(LoginRequiredMixin, CreateView):
form_class = CreateForm
model = ClearanceItem
template_name = 'clearance/add.html'
def form_valid(self, form):
instance = form.save(commit=False)
instance.recorded_by = self.request.user.userid
instance.save()
return HttpResponseRedirect(self.get_success_url())
поиск нескольких связанных вопросов Невозможно присвоить должен быть экземпляр. Django и кто-нибудь ответит на этот Scripter.title is a foreign key to Book, so you must give it an actual Book, not a string.
Я полагаю, что даю моему clearanceitem фактического пользователя, который является userid = 2003-221. Я не понимаю, почему это дает мне ошибку
надеюсь, кто-нибудь сможет помочь
edit: это потому, что userid - char(9), а recorded_by - char(8), есть ли разница?
Попробуйте это:
class Add(LoginRequiredMixin, CreateView):
form_class = CreateForm
model = ClearanceItem
template_name = 'clearance/add.html'
def form_valid(self, form):
instance = form.save(commit=False)
instance.recorded_by = ClearanceCustomuser.objects.get(userid=self.request.user.userid)
instance.save()
return HttpResponseRedirect(self.get_success_url())