TypeError at /dashboard/profiles/create/ Поле 'id' ожидало число, но получило []
Здравствуйте инженеры Я пытался получить выбор модели через представление, чтобы я мог отобразить их в шаблоне, чтобы сделать его легким для пользователей, но я клянусь, это дало мне некоторые трудные времена Я думал, что это потому, что у меня нет элементов в базе данных, но даже когда я добавил их, ошибка сохраняется. Пожалуйста, дайте мне идеи, я уверен, что с вами это сработает. вот моя модель:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.ImageField(upload_to = '', default = path_and_rename, blank=True)
provider = 'provider'
requester = 'requester'
user_types = [
(provider, 'provider'),
(requester, 'requester'),
]
user_type = models.CharField(max_length=155, choices=user_types, default=requester)
first_name = models.CharField(max_length=255, default='')
last_name = models.CharField(max_length=255, default='')
GENDER_MALE = 'Male'
GENDER_FEMALE = 'Female'
OTHER = 'Other'
GENDER_CHOICES = [
(GENDER_MALE, 'Male'),
(GENDER_FEMALE, 'Female'),
(OTHER, 'Other'),
]
gender = models.CharField(max_length=15, choices=GENDER_CHOICES, blank=True)
email = models.EmailField(default='none@email.com')
phonenumber = models.CharField(max_length=15, default='') #blank=True, null=True
birth_date = models.DateField(default='1975-12-12')
residential_address = models.CharField(max_length=255, default='')
village = models.CharField(max_length=255, default='')
city = models.CharField(max_length=255, default='')
state = models.CharField(max_length=255, default='')
country = models.CharField(max_length=255, default='')
education_background = models.CharField(max_length=255, default='')
single = 'single'
married = 'married'
statuses = [
(single, 'single'),
(married, 'married'),
]
marrital_status = models.CharField(max_length=255, choices=statuses, default='single')
USD = 'United States of America Dollar'
CND = 'Canadian Dollar'
EUR = 'Euro'
Currency_choices = [
(USD, 'United States of America Dollar'),
(CND, 'Canadian Dollar'),
(EUR, 'Euro')
]
currency_choice = models.CharField(max_length=155, choices=Currency_choices, default='USD')
amount_to_pay = models.CharField(max_length=255, default='')
def __str__(self):
return self.user.username
def get_absolute_url(self):
return reverse('dashboard:profile_detail', kwargs= {'id':self.id} )
form
class ProfileCreateForm(forms.ModelForm):
class Meta:
model = Profile
fields = [
'avatar',
'user_type',
'first_name',
'last_name',
'gender',
'email',
'phonenumber',
'birth_date',
'residential_address',
'address',
'village',
'city',
'state',
'country',
'education_background',
'phonenumber',
'birth_date',
'marrital_status',
'currency_choice',
'amount_to_pay',]
и затем представление с методомModel_with_choices._meta.get_field('your_foreign_key_variable_name').choices
:
def profile_create_view(request, **kwargs):
form = ProfileCreateForm(request.POST, instance=request.user)
profiles = Profile.objects.all()
ids = profiles.values_list('pk', flat=True)
obj = Profile.objects.get(id=[profile_id for profile_id in ids])
user_type = Profile.user_types
gender_choice = Profile.GENDER_CHOICES
marital_status = Profile.statuses
Currency_choice = Profile.Currency_choices
if request.method == "POST":
form = ProfileCreateForm(request.POST, instance=request.user)
context = {
'obj':obj,
'form' : form,
'user_type' : user_type,
'gender_choice' : gender_choice,
'marital_status' : marital_status,
'Currency_choice' : Currency_choice,
}
if form.is_valid():
form.save()
return redirect('dashboard:dash_home')
else:
form = ProfileCreateForm(instance=request.user)
context = {
'form' : form,}
return render(request, 'users/profile.html', {'context': context})