【问题标题】:How to get the data from two models from user input?如何从用户输入中获取两个模型的数据?
【发布时间】:2012-05-17 21:17:34
【问题描述】:

问题是我不能去这个模型,他特别相信用户会将许多输入分配给模型,而我只将一个输入分配给另一个模型。

思路是从所有条目中获取所有数据,每个条目获取最后一级相关模型,请看示例:

class User
    # a standard django.contrib.auth user model

class UserProfile(models.Model):
    # my AUTH_PROFILE_MODULE for django-profiles
    user = models.ForeignKey(User, unique=True)
    instance = models.ManyToManyField(Instance1)

class Model2(models.Model):
    user = models.ForeignKey(User)
    item0 = models.CharField(max_length=12)
    model2 = models.OneToOneField(Model2)

class Model3(models.Model):
    item1 = models.CharField(max_length=12)

user = request.user

模型 2 - 项目 1

  • item0[0]= 1
  • item0[1]= 2
  • item0[2]= 3

模型 3 - 项目 2

  • item1[0]= 4
  • item1[1]= 5
  • item1[2]= 6

因为我可以从 Model2 和 Model3 中获取所有 item1 和 intem2,使用配置文件并放置在一个变量中以在模板中呈现所有 ManyToManyField -> (OneToOneField -> Items)?

我正在尝试:

myuser = request.user
items = UserProfile.objects.get(user=myuser)

去爬查询。

【问题讨论】:

  • 你真的需要解决这个问题 - 很难说这里要问什么。
  • 好吧,我想我开始明白了 - 到目前为止,您在模板中尝试了什么?
  • {% for item in allitem %}

    {{item}}

    {% endfor %},就是这个意思,

    1

    2

    3

    |分开|

    4

    5

    6

  • 有了这个 (UserProfile.objects.get (user = myuser)) 我有了那个用户的所有数据,我只需要输入每个 ManyToManyField 并获取所有数据,有什么想法吗?

标签: python django-models django-views


【解决方案1】:

我认为您可能会混淆模型和实例。您在此处定义的所有内容都只是一个蓝图或模板——您并没有真正通过它们直接存储或访问数据。但是,您可以使用它们为您的数据提供结构,并创建此结构的实例

例如,我在这里定义了一个基本模型。在 Django 中,这些通常定义在models.py

class MyModel(models.Model):
  name = models.CharField(max_length=20)
  element = models.CharField(max_length=12)

现在,我将使用称为构造函数的函数创建模型的实例。一般来说,您只使用模型的名称 (ModelName(parameter=value,...)) 来调用它。在 Django 中,这通常作为 views.py 中的操作的一部分完成,但您也可以通过导入所需的类 (from models import Model) 在 Python 控制台中进行尝试。

在这里我填充了 10 个 MyModel 实例:

for i in range (0,10):
  m = MyModel(element="letter" + str(i), name="Instance"+ str(i))
  m.save() # this saves m in MyModel.objects

所有这些实例都通过ModelName.objects.all() 访问,您可以通过通常的. 表示法访问该字段:

models = MyModel.objects.all()
output = ""
for m in models:
  output += m.name + ":" + m.element

将其输出到浏览器需要更多步骤 - 我强烈建议您逐步尝试official Django tutorial,以更好地了解框架的工作原理。

【讨论】:

  • 实例,该项目仅用于示例,模型是对模型2和模型3的用户模型,您想要从用户输入中获取两个模型的数据,我将编辑问题是不要失败。
猜你喜欢
  • 2019-11-09
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
相关资源
最近更新 更多