0

問題は、特にユーザーがモデルに多くの入力を割り当て、それらの多くを別のモデルに 1 つの入力のみを割り当てると信じているこのモデルに行くことができないことです。

アイデアは、すべてのエントリからすべてのデータを取得し、各エントリが最後のレベルの関連モデルを取得することです。例を参照してください:

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

  • アイテム0[0]= 1
  • item0[1]= 2
  • item0[2]= 3

モデル3 - アイテム2

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

プロファイルを使用してすべての item1 および intem2 フォーム Model2 および Model3 を取得し、変数に配置して、すべての ManyToManyField -> (OneToOneField -> Items) をテンプレートにレンダリングできますか?

私はしようとしています:

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

クエリを登ります。

4

1 に答える 1

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ますが、必要なクラスをインポートすることでPythonコンソールで試すこともできます(from models import Model)。

ここでは、次の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

これを取得してブラウザに出力するには、さらにいくつかの手順が必要です。フレームワークがどのように機能するかをよりよく理解するために、公式のDjangoチュートリアルを段階的に試すことを強くお勧めします。

于 2012-05-17T22:38:51.700 に答える