Невозможно присвоить значение "'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 файла
Вы установили 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