【问题标题】:Django on creating new model store records of existing user and its dataDjango关于创建现有用户及其数据的新模型存储记录
【发布时间】:2018-11-13 06:49:26
【问题描述】:

我创建了一个模型客户:

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)

我应该如何将数据插入到现有客户的此 XYZ 表中,而不在查询中手动使用 Insert?有没有任何 Django 查询或方法可以在 XYZ 表中插入现有的客户记录?

【问题讨论】:

  • 你想要一些 XYZ 的默认值吗?
  • @VineethSai 添加了默认值。

标签: python sql django django-models


【解决方案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)

【讨论】:

  • 如何传递未定义的 request.user?
  • 对不起,您还需要导入用户模型并获取该条目的特定用户
  • 我更新了我的客户模型,现在它也有用户列
  • 所有客户对象都可以通过 customer 变量在 for 循环中使用。从那里获取您想要的用户。并在XYZ 中更新它
  • 如果只需要添加管理员用户我可以在这里应用任何过滤器怎么办?
【解决方案2】:

我认为你应该做的是这些步骤:

  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()
    

【讨论】:

  • 如果只需要添加管理员用户我可以在这里应用任何过滤器怎么办?
猜你喜欢
  • 2013-04-02
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 2014-07-04
  • 2012-09-29
  • 2023-01-12
  • 2017-12-24
  • 2017-07-22
相关资源
最近更新 更多