[英]Django foreign key model is not saving reference
我在保存模型,将我的UserProfile参考保存到客户的外键上遇到问题,并且我已经确定正在发送用于发送所需信息和客户对象的表单,但是当我保存模型时,这对客户失去了参考
我的代码是
models.py
from django.db import models
from customers.models import Customer
from django.contrib.auth.models import User, Group
from django.contrib.sites.models import Site
from anfitrion.models import ModelBase
from django.db.models.signals import post_save
class UserProfile(ModelBase):
user = models.OneToOneField(User)
customer = models.ForeignKey(Customer)
address = models.CharField(max_length = 255)
phone_home = models.CharField(max_length = 16)
phone_office = models.CharField(max_length = 16)
expiration = models.DateTimeField(null=True, blank=True)
picture = models.ImageField(upload_to='profiles/%Y/%m/%d')
observations = models.TextField(null=True, blank=True)
status = models.BooleanField()
def __str__(self):
return "%s's profile" % self.user
def create_user_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=User)
class SiteProfile(ModelBase):
site = models.OneToOneField(Site)
def __str__(self):
return "%s's profile" % self.user
def create_site_profile(sender, instance, created, **kwargs):
if created:
profile, created = SiteProfile.objects.get_or_create(site=instance)
post_save.connect(create_site_profile, sender=Site)
运行保存功能
def users_save (request):
#try:
if request.is_ajax() and request.POST:
user_id = request.POST['user_id']
s = get_current_site(request)
u = User (
username = request.POST['username'],
first_name = request.POST['first_name'],
last_name = request.POST['last_name'],
email = request.POST['email']
)
u.set_password(request.POST['password'])
c = None
if int( request.POST['customer_id'] ) > 0:
c = Customer.objects.get(id=request.POST['customer_id'])
up = UserProfile(
customer = c,
address = request.POST['address'],
phone_home = request.POST['phone_home'],
phone_office = request.POST['phone_office']
)
up.user = u
u.save()
if int( request.POST['group_id'] ) > 0:
g = Group.objects.get( id = request.POST['group_id'] )
g.user_set.add(u)
return HttpResponse(1, mimetype='application/json')
这里
up.user = u
u.save()
你是不是保存up
任何地方。
所以u.save()
应该是up.save()
u.save()
up.user = u
up.save()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.