我已经创建了一个客户模型:
class Customer(models.Model):
name = models.CharField(max_length=20, db_index=True)
address = models.CharField(max_length=100, blank=True)
email = models.EmailField(max_length=100, blank=True)
users = models.ManyToManyField(User, db_index=True)
phone = models.IntegerFeild(max_length=100, blank=True)
以及称为XYZ的新模型:
class XYZ(models.Model):
customer = models.OneToOneFieldOneToOneField(Customer, on_delete=models.CASCADE)
abc = models.CharField(max_length=10, default='x')
user = models.OneToOneField(User, on_delete=models.CASCADE)
如何在不为查询手动使用Insert
的情况下将数据插入现有客户的XYZ表中?是否有任何Django查询或方法可将现有客户记录插入XYZ表?
答案 0 :(得分:1)
这是一种实现方式,因为目前尚不清楚XYZ
中的数据是如何存储的,因此我假设是静态值。
进入django shell。您可以运行python manage.py shell
现在导入您的模型
from yourapp.models import Customer, XYZ
还导入您的user
模型
from django.contrib.auth.models import User
获取要添加的用户对象。
user = User.objects.get(username='your_username')
如果您想要管理员,可以执行此操作
superusers = User.objects.filter(is_superuser=True)
#这将获取您网站的所有管理员。但是请注意,如果您的网站有多个管理员,则这是一个查询集(即用户对象列表)。
现在您可以在XYZ
表中为每个客户对象创建一个条目。
最后,根据您的要求,您可以运行此循环。
for customer in Customer.objects.all():
XYZ.objects.create(customer=customer, abc="your string", user=user)
答案 1 :(得分:1)
我认为您应该执行以下步骤:
python manage.py shell
查询所有客户
从path.to.your.models导入客户
customers = Customer.objects.filter(users =
插入所有XYZ
对于客户中的c:
if c.users.is_admin:
xyz = XYZ(
customer=c
user=c.users
)
xyz.save()