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())
Вернуться на верх