Django创建新模型存储现有用户及其数据的记录

时间:2018-11-13 06:49:26

标签: python sql django django-models

我已经创建了一个客户模型:

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表?

2 个答案:

答案 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)

我认为您应该执行以下步骤:

  1. python manage.py shell

  2. 查询所有客户

    从path.to.your.models导入客户

    customers = Customer.objects.filter(users =

  3. 插入所有XYZ

    对于客户中的c:

    if c.users.is_admin:
        xyz = XYZ(
            customer=c
            user=c.users
            )
        xyz.save()