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

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

6
Djangoモデルの数値フィールドの最大値を制限する方法は?
Djangoには、DecimalFieldやPositiveIntegerFieldなど、モデルで使用できるさまざまな数値フィールドがあります。前者は格納される小数点以下の桁数と格納される文字の総数に制限できますが、特定の範囲内の数値のみを格納するように制限する方法はありますか。 それが失敗した場合、PositiveIntegerFieldを制限して、たとえば50までの数値のみを保存する方法はありますか? 更新:バグ6845 がクローズされたため、このStackOverflowの質問は意味がないかもしれません。-サンパブロクパー

8
Djangoで1対多の関係を表現する方法
私は今Djangoモデルを定義していますOneToManyFieldが、モデルフィールドタイプにはがないことに気付きました。これを行う方法があると確信しているため、何が欠けているのかわかりません。私は基本的に次のようなものを持っています: class Dude(models.Model): numbers = models.OneToManyField('PhoneNumber') class PhoneNumber(models.Model): number = models.CharField() この場合、それぞれがDude複数持つことができるPhoneNumberのが、私から知っている必要がないという点で関係は、単方向でなければなりませんPhoneNumberどのDude私は、多くの異なるオブジェクトを持っている可能性があるとして、それ自体は、それを所有していることを自分PhoneNumberのようなインスタンスBusinessのために例: class Business(models.Model): numbers = models.OneToManyField('PhoneNumber') OneToManyFieldこの種類の関係を表すには、モデル内で何を置き換えますか(存在しません)。私はHibernate / JPAから来ており、1対多の関係の宣言は次のように簡単でした。 @OneToMany private List<PhoneNumber> phoneNumbers; これをDjangoでどのように表現できますか?


5
Djangoで「一括更新」する方法は?
Djangoでテーブルを更新したいのですが、生のSQLでは次のようになります。 update tbl_name set name = 'foo' where name = 'bar' 私の最初の結果はこのようなものです-しかし、それは厄介ですね。 list = ModelClass.objects.filter(name = 'bar') for obj in list: obj.name = 'foo' obj.save() よりエレガントな方法はありますか?

3
Django動的モデルフィールド
一部のユーザーが独自のデータフィールドを(管理者経由で)定義して、フォームで追加のデータを収集し、そのデータについてレポートできるマルチテナント型アプリケーションに取り組んでいます。後者のビットはJSONFieldを優れたオプションにしないので、代わりに次の解決策があります: class CustomDataField(models.Model): """ Abstract specification for arbitrary data fields. Not used for holding data itself, but metadata about the fields. """ site = models.ForeignKey(Site, default=settings.SITE_ID) name = models.CharField(max_length=64) class Meta: abstract = True class CustomDataValue(models.Model): """ Abstract specification for arbitrary data. """ value = models.CharField(max_length=1024) class Meta: abstract = …

4
Djangoでは、動的フィールド検索でQuerySetをどのようにフィルタリングしますか?
クラスを考える: from django.db import models class Person(models.Model): name = models.CharField(max_length=20) 動的引数に基づいてフィルタリングするQuerySetを作成することは可能ですか?例えば: # Instead of: Person.objects.filter(name__startswith='B') # ... and: Person.objects.filter(name__endswith='B') # ... is there some way, given: filter_by = '{0}__{1}'.format('name', 'startswith') filter_value = 'B' # ... that you can run the equivalent of this? Person.objects.filter(filter_by=filter_value) # ... which will throw an …

4
データベースからdjangoオブジェクトをリロードします
データベースからdjangoオブジェクトの状態を更新することは可能ですか?私はおおよそ次と同等の動作を意味します: new_self = self.__class__.objects.get(pk=self.pk) for each field of the record: setattr(self, field, getattr(new_self, field)) 更新:トラッカーで再オープン/不変の戦争が見つかりました:http ://code.djangoproject.com/ticket/901 。それでも、メンテナがこれを好まない理由がわかりません。


2
Djangoモデルフォームオブジェクトの自動作成日?
オブジェクトの作成日を自動的に設定し、オブジェクトが最後に更新されたときに記録するフィールドを設定する最良の方法は何ですか? models.py: created_at = models.DateTimeField(False, True, editable=False) updated_at = models.DateTimeField(True, True, editable=False) views.py: if request.method == 'POST': form = MyForm(request.POST) if form.is_valid(): obj = form.save(commit=False) obj.user = request.user obj.save() return HttpResponseRedirect('obj_list') エラーが発生します: objects_object.created_at may not be NULL この値を自分で手動で設定する必要がありますか?それが渡されたパラメータのポイントだと思いましたDateTimeField(または単にデフォルトであり、設定editable=Falseしたのでフォームに表示されないため、リクエストで送信されず、したがって取得されませんフォームに入れますか?) これを行う最良の方法は何ですか?__init__方法?

6
djangoのmodel.save()がfull_clean()を呼び出さないのはなぜですか?
モデルフォームの一部として保存されていない限り、djangoのormがモデルで 'full_clean'を呼び出さないのに十分な理由があるかどうかを誰かが知っているのであれば、私は興味があります。 モデルのsave()メソッドを呼び出しても、full_clean()は自動的には呼び出されないことに注意してください。手動で作成した独自のモデルのワンステップモデル検証を実行する場合は、手動で呼び出す必要があります。 djangoの完全なクリーンドキュメント (注:Django 1.6用に更新された引用...以前のdjangoのドキュメントにもModelFormsに関する警告がありました。) 人々がこの振る舞いを望まない理由はありますか?時間をかけてモデルに検証を追加した場合、モデルが保存されるたびに検証を実行したいと思うでしょう。 すべてを適切に機能させる方法を知っています。ただ説明を求めています。

13
Djangoフィルターと単一オブジェクトの取得?
私はこれについて何人かの同僚と議論していました。あなたが1つだけを期待しているときにDjangoでオブジェクトを取得するための好ましい方法はありますか? 2つの明白な方法は次のとおりです。 try: obj = MyModel.objects.get(id=1) except MyModel.DoesNotExist: # We have no object! Do something... pass そして: objs = MyModel.objects.filter(id=1) if len(objs) == 1: obj = objs[0] else: # We have no object! Do something... pass 最初の方法は、動作はより正しいようですが、制御フローで例外を使用しているため、オーバーヘッドが発生する可能性があります。2つ目はより回り道ですが、例外は発生しません。 これらのうちどれが好ましいと思いますか?どちらがより効率的ですか?

12
Djangoモデルにリストを保存する最も効率的な方法は何ですか?
現在、次のようなコードに多数のpythonオブジェクトがあります。 class MyClass(): def __init__(self, name, friends): self.myName = name self.myFriends = [str(x) for x in friends] 次に、これをDjangoモデルに変換します。ここで、self.myNameは文字列フィールドで、self.myFriendsは文字列のリストです。 from django.db import models class myDjangoModelClass(): myName = models.CharField(max_length=64) myFriends = ??? # what goes here? リストはPythonで非常に一般的なデータ構造であるため、Djangoモデルフィールドが存在することを期待しています。ManyToManyまたはOneToManyの関係を使用できることはわかっていますが、コードでの余分な間接参照を回避したいと考えていました。 編集: この関連する質問を追加しました。

3
Djangoの値リストと値
Djangoでは、次の2つの違いは何ですか? Article.objects.values_list('comment_id', flat=True).distinct() 対 Article.objects.values('comment_id').distinct() 私の目標は、それぞれの下で一意のコメントIDのリストを取得することArticleです。私はドキュメントを読みました(そして実際には両方のアプローチを使用しています)。結果は明らかに似ています。


4
Django / Southを使用してモデルの名前を変更する最も簡単な方法は?
私はSouthのサイト、Google、SOでこれに対する答えを探していましたが、これを行う簡単な方法を見つけることができませんでした。 Southを使用してDjangoモデルの名前を変更したい。次のものがあるとします。 class Foo(models.Model): name = models.CharField() class FooTwo(models.Model): name = models.CharField() foo = models.ForeignKey(Foo) そして、あなたはFooをBarに変換したい、すなわち class Bar(models.Model): name = models.CharField() class FooTwo(models.Model): name = models.CharField() foo = models.ForeignKey(Bar) 簡単にするために、名前をからFooに変更しようとしていますが、今のところメンバーをBar無視します。fooFooTwo サウスを使用してこれを行う最も簡単な方法は何ですか? 私はおそらくデータの移行を行うことができましたが、それはかなり複雑に思われます。 たとえばdb.rename_table('city_citystate', 'geo_citystate')、カスタム移行を記述しますが、この場合、外部キーを修正する方法がわかりません。 あなたが知っているより簡単な方法は?

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