タグ付けされた質問 「django-models」

WebフレームワークDjangoのモデルクラスの使用に関する質問。

4
単一のクエリセットでデータベースレコードを選択して更新する
2つのクエリを実行するのではなく、同じようにupdateand selectステートメントを実行するにはどうすればよいですかqueryset。1つはオブジェクトを選択するためのもので、もう1つはオブジェクトを更新するためのものです。 SQLでこれに相当するものは次のようになります。 update my_table set field_1 = 'some value' where pk_field = some_value

6
多対多フィールドを持つDjangoモデルのオブジェクトを作成するにはどうすればよいですか?
私のモデル: class Sample(models.Model): users = models.ManyToManyField(User) 両方user1とuser2そのモデルに保存したい: user1 = User.objects.get(pk=1) user2 = User.objects.get(pk=2) sample_object = Sample(users=user1, users=user2) sample_object.save() それは間違っていることはわかっていますが、私がやりたいことはきっと理解できます。どうしますか?

10
Djangoでnullを許可する一意のフィールド
フィールドバーがあるモデルFooを持っています。バーフィールドは一意であるが、私はバーフィールドがある場合、複数のレコードを許可するという意味、それにNULLを許可する必要がありnullますが、そうでない場合nullの値は一意である必要があります。 これが私のモデルです: class Foo(models.Model): name = models.CharField(max_length=40) bar = models.CharField(max_length=40, unique=True, blank=True, null=True, default=None) そして、これはテーブルに対応するSQLです: CREATE TABLE appl_foo ( id serial NOT NULL, "name" character varying(40) NOT NULL, bar character varying(40), CONSTRAINT appl_foo_pkey PRIMARY KEY (id), CONSTRAINT appl_foo_bar_key UNIQUE (bar) ) 管理インターフェイスを使用して、barがnullである複数のfooオブジェクトを作成すると、「このBarを持つFooはすでに存在します」というエラーが発生します。 ただし、データベース(PostgreSQL)に挿入すると: insert into appl_foo ("name", bar) values ('test1', …

10
Django:文字列からモデルを取得しますか?
Djangoでは、次のような関係を指定できます。 author = ForeignKey('Person') そして、内部的には文字列 "Person"をモデルに変換する必要がありますPerson。 これを行う関数はどこにありますか?使いたいのですが見つかりません。


3
Django ManyToMany filter()
私はモデルを持っています: class Zone(models.Model): name = models.CharField(max_length=128) users = models.ManyToManyField(User, related_name='zones', null=True, blank=True) そして、私は次のようにフィルターを構築する必要があります: u = User.objects.filter(...zones contains a particular zone...) これはユーザーのフィルターである必要があり、単一のフィルターパラメーターである必要があります。これは、管理ユーザーの変更リストをフィルターするためにURLクエリ文字列を作成しているためです。http://myserver/admin/auth/user/?zones=3 シンプルなようですが、頭がおかしいです!

4
実行時にupload_toが決定されたDjango FileField
すべてのユーザーのファイルをMEDIA_ROOTに移動させるのではなく、ユーザーjoeがファイルをアップロードするとMEDIA_ROOT / joeに移動するように、アップロードを設定しようとしています。問題は、モデルでこれを定義する方法がわからないことです。現在の外観は次のとおりです。 class Content(models.Model): name = models.CharField(max_length=200) user = models.ForeignKey(User) file = models.FileField(upload_to='.') だから私が欲しいのは「。」の代わりです upload_toとして、それをユーザーの名前にします。 Django 1.0以降では、upload_toを処理するための独自の関数を定義できることを理解していますが、その関数にはユーザーが誰であるかが分からないため、少し迷っています。 助けてくれてありがとう!


2
models.pyでDjango設定変数を参照するにはどうすればよいですか?
これは非常に初心者の質問です。しかし、私は困惑しています。model.pyでDjango設定変数を参照するにはどうすればよいですか? NameError: name 'PRIVATE_DIR' is not defined また、他の多くのものを試しました settings.PRIVATE_DIR settings.py: PRIVATE_DIR = '/home/me/django_projects/myproject/storage_dir' models.py: # Problem is here. from django.core.files.storage import FileSystemStorage fs = FileSystemStorage(location=PRIVATE_DIR) class Customer(models.Model): lastName = models.CharField(max_length=20) firstName = models.CharField(max_length=20) image = models.ImageField(storage=fs, upload_to='photos', blank=True, null=True) これを行う正しい方法は何ですか?

5
Djangoでcountアノテーションのオブジェクトをフィルタリングする方法は?
単純なDjangoモデルEventとParticipant: class Event(models.Model): title = models.CharField(max_length=100) class Participant(models.Model): event = models.ForeignKey(Event, db_index=True) is_paid = models.BooleanField(default=False, db_index=True) 参加者の総数でイベントクエリに注釈を付けるのは簡単です。 events = Event.objects.all().annotate(participants=models.Count('participant')) フィルタリングされた参加者の数を注釈する方法はis_paid=True? 参加者の数に関係なく、すべてのイベントをクエリする必要があります。たとえば、注釈付きの結果でフィルタリングする必要はありません。0参加者がいる場合は問題ありません0。注釈付きの値が必要です。 ドキュメントの例は、オブジェクトにで注釈を付ける代わりにクエリから除外するため、ここでは機能しません0。 更新。Django 1.8には新しい条件式機能が備わっているので、次のようにできます。 events = Event.objects.all().annotate(paid_participants=models.Sum( models.Case( models.When(participant__is_paid=True, then=1), default=0, output_field=models.IntegerField() ))) Update 2. Django 2.0には新しい条件付き集約機能があります。以下の承認済みの回答を参照してください。

10
Djangoでモデルのフィールドを取得する
Djangoモデルを前提として、そのすべてのフィールドをリストしようとしています。_metaモデル属性を使用してこれを行う例をいくつか見ましたが、メタの前にある下線は、_meta属性がプライベート属性であり、直接アクセスしてはならないことを示していませんか?...たとえば、_metaのレイアウトが将来変更され、安定したAPIにならない可能性があるためですか? _metaはこのルールの例外ですか?それは安定していてすぐに使用できますか、それともアクセスするのは悪い習慣と考えられていますか?または、_meta属性を使用せずにモデルのフィールドをイントロスペクトする関数または他の方法がありますか?以下は、_meta属性を使用してこれを行う方法を示すいくつかのリンクのリストです アドバイスは大歓迎です。 djangoオブジェクトの取得/設定フィールド http://www.djangofoo.com/80/get-list-model-fields djangoモデルフィールドをイントロスペクトするにはどうすればよいですか?

4
Django-循環モデルのインポートの問題
私は本当にこれを取得していないので、誰かがこれがどのように機能するかを説明できれば、私はそれを非常に感謝します。私は2つのアプリケーション、アカウントとテーマを持っています...これは私の設定リストです: INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'accounts', 'themes', ) アカウントでは、私はこれをやろうとしています: from themes.models import Theme class Account(models.Model): ACTIVE_STATUS = 1 DEACTIVE_STATUS = 2 ARCHIVE_STATUS = 3 STATUS_CHOICES = ( (ACTIVE_STATUS, ('Active')), (DEACTIVE_STATUS, ('Deactive')), (ARCHIVE_STATUS, ('Archived')), ) id = models.AutoField(primary_key=True) name = models.CharField(max_length=250) slug = models.SlugField(unique=True, verbose_name='URL Slug') status = …

6
Djangoモデルを作成するか、存在する場合は更新します
PersonのIDが存在しない場合、Personなどのモデルオブジェクトを作成するか、そのPersonオブジェクトを取得します。 次のように新しい人を作成するコード: class Person(models.Model): identifier = models.CharField(max_length = 10) name = models.CharField(max_length = 20) objects = PersonManager() class PersonManager(models.Manager): def create_person(self, identifier): person = self.create(identifier = identifier) return person しかし、既存の人物オブジェクトをどこで確認して取得するのかわかりません。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.