如何从用户输入中获取两个模型的数据?

时间:2012-05-17 21:17:34

标签: python django-models django-views

问题在于,我不能选择那个特别相信用户会为模型分配许多输入的模型以及那些我只为一个输入分配给另一个模型的输入。

这个想法是从所有条目中获取所有数据,每个条目都获得最后一级相关模型,请参阅示例:

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

Model2 - item1

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

Model3 - item2

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

因为我可以得到所有item1和intem2形式的Model2和Model3,使用profile并放置在一个变量中以在模板中呈现所有ManyToManyField - > (OneToOneField - > Items)?

我正在尝试:

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

继续攀登查询。

1 个答案:

答案 0 :(得分:0)

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

例如,我在这里定义了一个基本模型。在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控制台中进行尝试。

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

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,以便更好地了解框架的工作原理。