Невозможно назначить> ":" Project.manager "должен быть экземпляром" Profil " - PullRequest
0 голосов
/ 26 мая 2018

Здравствуйте, у меня появляется эта ошибка, когда я начинаю сохранять форму.

Cannot assign "<SimpleLazyObject: <User: admin>>": "Project.manager" must be a "Profil" instance.

У меня есть два приложения и учетная запись проекта

account.model.py

class Profil(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE)
   photo_path = time.strftime('photo/%Y/%m/%d')
   photo = models.ImageField(upload_to=PathAndRename(photo_path), blank=True, null=True)
   antity = models.CharField(max_length=50, choices=ENTITY_TYPE, default=ENTITY_TYPE[0])
   biography = models.TextField(blank=True, max_length=500)
   location = models.CharField(max_length=30, blank=True, default='Congo-BZV')
   facebook_url = models.URLField(default='', blank=True)
   twitter_url = models.URLField(default='', blank=True)
   inscrit_newsletter = models.BooleanField(default=True)
   def __str__(self):
       return "Profil de {0}".format(self.user.username)

project.model.py

class Project( models.Model):

   manager = models.ForeignKey('accounts.Profil', related_name='project', on_delete=models.CASCADE)
   title = models.CharField(max_length = 100)
   slug = models.SlugField(unique=True)


   image_path = time.strftime('images/%Y/%m')
   main_image = models.ImageField(upload_to=PathAndRename(image_path), blank=True)


   slogan = models.CharField(max_length=300, blank=True)

   description = RichTextUploadingField(blank = True, null=True)

project.views.py

def project_new(request):
   if request.method == 'POST':
       form = ProjectForm(request.POST)
       if form.is_valid():
           project = form.save(commit = False)
           project.manager = request.user
           project.save()

   else:
       form = ProjectForm()


   return render(request, 'project/project_new.html', {'form': form})

project.forms.py

class ProjectForm(forms.ModelForm):

   title = forms.CharField(label='Titre')
   description = forms.CharField(widget=CKEditorUploadingWidget())
   category = forms.ModelChoiceField(queryset =  Category.objects.all(), label='Catégorie')

#description = forms.CharField(widget=forms.Textarea(attrs={'cols': 80, 'rows': 20}))


   class Meta:
       model = Project
       fields = ('title', 'nb_days', 'slogan', 'category', 'description')

Я бы хотел, чтобы каждый пользователь или менеджер был связан с проектом, который они публикуют, через форму.Как я могу связать две модели, сохранив модель?

Спасибо

1 Ответ

0 голосов
/ 26 мая 2018

insted из

project.manager = request.user

Вы должны использовать:

project.manager = request.user.profil
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...