Невозможно присвоить значение "'1'": "Groups.profile" должен быть экземпляром "Profile".

У меня есть модель профиля, которая имеет экземпляр модели пользователя... Я пытаюсь создать группу с помощью формы. Эта модель группы имеет модель профиля как экземпляр, так как же мне выбрать аутентифицированного пользователя автоматически для создания группы, я запутался...

Это моя групповая модель

class Groups(models.Model):
profile = models.ForeignKey(Profile, related_name='my_groups', on_delete=models.CASCADE)
groups_name = models.CharField(max_length=150)
slug = models.SlugField(max_length=150, unique=True)
cover_pic = models.ImageField(upload_to='images/groups/', null=True, blank=True)
type_group = models.CharField(max_length=150)
created_date = models.DateTimeField(auto_now_add=True)
about_group = models.TextField(max_length=600)
members = models.ManyToManyField(Profile,through="GroupMember")

def __str__(self):
    return self.groups_name

Это мой профиль Модель

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
slug = models.SlugField(max_length=100, unique=True)
profile_pic = models.ImageField(upload_to='images/user/profile/', null=True, blank=True)
cover_pic = models.ImageField(upload_to='images/user/profile/', null=True, blank=True)
user_bio = models.TextField(null=True,blank=True, max_length=255)
designation = models.CharField(blank=True,null=True, max_length=255)
education = models.CharField(blank=True, null=True, max_length=255)
marital_status = models.CharField(blank=True, null=True, max_length=60)
hobbies = models.CharField(blank=True, null=True, max_length=500)
location = models.CharField(blank=True, null=True, max_length=500)
mobile = models.IntegerField(blank=True, null=True)

def __str__(self):
    return str(self.user)

Это форма для создания группы

class GroupCreateForm(forms.ModelForm):
class Meta:
    model = Groups
    fields = ('cover_pic', 'profile', 'groups_name', 'type_group', 'about_group')

profile = forms.CharField(widget=forms.TextInput(attrs={
    'class': 'form-control input-group-text',
    'value':'',
    'id':'somesh',
    'type': 'hidden',


}))

Это создание группового html файла

это html страница

это ошибка...

Вы установили CharField для профиля в вашей форме. Когда вы посылаете данные в эту форму, она пытается сделать запись Group с FK в CharField, например "1", и это дает ошибку, потому что вы должны передать Profile объект в Group.

Зависит от того, что именно вы хотите, есть несколько вариантов.

Вы можете использовать ModelChoiceField. Читайте об этом в https://docs.djangoproject.com/en/3.2/ref/forms/fields/#django.forms.ModelChoiceField

Или вы можете использовать Inline FormSet и прочитать об этом в https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets

И пример для Inline FormSet в Создание модели и связанных моделей с помощью наборов форм Inline

Вернуться на верх