Python Django get_或_create未在模型中创建新记录
我对get_或create语句有问题。如果有记录但未创建记录,则获取该记录。我所有的模型字段都有默认值 我的观点.pyPython Django get_或_create未在模型中创建新记录,python,django,Python,Django,我对get_或create语句有问题。如果有记录但未创建记录,则获取该记录。我所有的模型字段都有默认值 我的观点.py from django.contrib.auth.decorators import login_required from django.shortcuts import render, HttpResponseRedirect, Http404, get_object_or_404 from django.contrib.auth import logout, lo
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, HttpResponseRedirect, Http404, get_object_or_404
from django.contrib.auth import logout, login, authenticate
from django.contrib.auth.models import User
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.utils.safestring import mark_safe
# Create your views here.
from .models import UserProfile
@login_required
def profile_view(request):
user = request.user
account = request.user
profile = UserProfile.objects.get_or_create(UserProfile, user=user)
context = {'profile': profile, 'account': account, }
template = 'profiles/profile.html'
return render(request, template, context)
我得到的回溯是:
ypeError at /profiles/
get_or_create() takes exactly 1 argument (3 given)
Request Method: GET
Request URL: http://127.0.0.1:8000/profiles/
Django Version: 1.6.5
Exception Type: TypeError
Exception Value:
get_or_create() takes exactly 1 argument (3 given)
我正在处理的models.py是:
class UserProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
city = models.CharField(max_length=120, default="Add your city")
country = models.CharField(max_length=120, default="Add your country") #(max_length=2, choices=[(x[0], x[3]) for x in country.COUNTRIES])
zipcode = models.CharField(max_length=8, default="Add your zip/postcode")
birthyear = models.IntegerField(max_length=4, default="Add your birthyear")
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
def __unicode__(self):
return str(self.user.username)
class Meta:
ordering = ['-updated', '-timestamp']
您不需要将模型类传递给方法
profile = UserProfile.objects.get_or_create(UserProfile, user=user)
应该是
profile, created = UserProfile.objects.get_or_create(user=user)
此外,get_或_create返回一个元组:(instance,created),如果数据库中不存在记录,则created为True。'ValueError at/profiles/无法分配“5”:“UserProfile.user”必须是“user”实例。请求方法:获取请求URL:Django版本:1.6.5异常类型:ValueError异常值:无法分配“5”:“UserProfile.user”必须是“user”实例。嗨,Rod,我已经更改了这一点,现在正在获取如上所述的回溯/@RodXavier我已经编辑了答案,仍然获得回溯错误“异常值:无法分配“5”:“UserProfile.user”必须是“user”实例。此部分
user=request.user.id
应该是user=request.user