gpt4 book ai didi

python - django - int 参数必须是字符串或数字,而不是 'Tuple'

转载 作者:太空狗 更新时间:2023-10-30 00:33:21 26 4
gpt4 key购买 nike

我已经看了几个小时了,但我似乎无法理解为什么我会收到这条消息...

int() argument must be a string or a number, not 'tuple'

在我的 views.py 的这一行上(注意:异常实际上发生在 django 核心的更深一层,但我的代码行最终触发了异常)...

service_interest = ServiceInterest.objects.get_or_create(service = service, client = client)

为什么我会收到此错误?为了您的利益,请参阅下面的 models.py、forms.py 和 views.py 中的片段。

模型.py:

class Client(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
site = models.URLField()
contact_date = models.DateField(default = datetime.date.today())

class Service(models.Model):
name = models.CharField(max_length=200)

class ServiceInterest(models.Model):
service = models.ForeignKey('Service')
client = models.ForeignKey('Client')

class Meta:
unique_together = ("service", "client")

表单.py...

class ContactForm(forms.Form):


SERVICE_CHOICES = (
('first_choice', 'Description of first choice'),
('second_choice', 'Description of second choice'),
('third_choice', 'Description of third choice'),
('other', 'Other')
)

SERVICE_CHOICES_DICT = dict(SERVICE_CHOICES)

name = forms.CharField(label='What would you like us to call you?', max_length=200, required=False)
email = forms.EmailField(label='What is your email address?', help_text='Ex: yourname@gmail.com')
url = forms.URLField(label='If you have a website, please provide a link', required=False, help_text="Ex: www.yoursite.com")
service_interest = forms.MultipleChoiceField(label="Please check all of the services you're interested in:", widget=forms.widgets.CheckboxSelectMultiple, choices=SERVICE_CHOICES, required=True)
other = forms.CharField(label='If you selected \"Other\", please specify:', max_length=200, required=False)
message = forms.CharField(max_length=10000, required=False, label='Any other information you think we should know?', widget=forms.widgets.Textarea)

def clean_other(self):
cleaned_data = super(ContactForm, self).clean()
if 'service_interest' in cleaned_data.keys():
options = cleaned_data['service_interest']
if 'other' in options:
other_input = cleaned_data['other']
if other_input == None or len(other_input) == 0:
raise forms.ValidationError('Required when \"Other\" is checked')

return cleaned_data

来自 views.py 的相关代码:

  name = form.cleaned_data['name']
email = form.cleaned_data['email']
url = form.cleaned_data['url']
interests = form.cleaned_data['service_interest']
other = form.cleaned_data['other']
message = form.cleaned_data['message']

client = Client.objects.get_or_create(name = name, email = email, site = url)
for interest in interests:
service = None
if(interest != 'other'):
service = Service.objects.get_or_create(name = ContactForm.SERVICE_CHOICES_DICT[interest])
else:
service = Service.objects.get_or_create(name = other)

# Appears to be responsible for the stack trace, even though exception
# is one level deeper in...
# /Library/Python/2.7/site-packages/django/core/handlers/base.py in get_response
service_interest = ServiceInterest.objects.get_or_create(service = service, client = client)

最佳答案

get_or_create 返回一个元组,形式为(instance, created)。第二个参数告诉你它是否必须创建它,显然足够了。请改为执行以下操作:

client, created = Client.objects.get_or_create(name = name, email = email, site = url)

关于python - django - int 参数必须是字符串或数字,而不是 'Tuple',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11797597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com