Django初学者。该项目是一个非常基本的食品交付应用程序。
我已使用指定的here使用一对一链接扩展了用户模型,以便在新用户尝试注册时包括“城市”字段。
问题是,当我在python shell中创建超级用户并尝试从以下帐户访问该帐户时http://127.0.0.1:8000/admin/login/?next=/admin/并单击登录,返回以下页面:
据我所知,这是由于每个用户/超级用户都必须链接到一个Customer对象。
如何避免这种情况?解决方案是通过指定不需要字段“ city”来覆盖超级用户类吗?如果是,我该怎么做?如果没有,在这种情况下的最佳做法是什么?
这里是accounts / model.py
from django.db import models
from django.contrib.auth.models import User
from city.models import City
from django.db.models.signals import post_save
from django.dispatch import receiver
# Create your models here.
class Customer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
city = models.ForeignKey(City, on_delete=models.CASCADE)
@receiver(post_save, sender=User)
def create_customer_user(sender, instance, created, **kwargs):
if created:
Customer.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_customer_user(sender, instance, **kwargs):
instance.customer.save()
如果您需要上传其他任何代码,请告诉我,因为我能想到的唯一涉及的代码就是我发布的代码。
提前感谢
正如您提到的,您的Uers
和Customer
模型之间具有这里的问题是您的User
模型没有与之关联的Customer
对象。
您有两个选择:
1)输入shell并创建一个Customer
对象并填写关系。
2)使您的相关字段为空;在blank=True
字段上设置null=True
和user
。