質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

3729閲覧

[Django] 設定情報など行が1つだけでいい場合のmodelデザイン

horik

総合スコア44

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

0クリップ

投稿2016/11/03 14:51

例えばダイレクトメールを送信するシステムがあったとして
ユーザーテーブルや興味テーブルは
データをどんどん追加して増やしていくことになりますが、
全体設定は一つだけで十分です。

この場合、設定テーブルはどのようなデザインにすればいいでしょうか?
行の追加を禁止する記述というのはあるんでしょうか。

舌足らずかもしれませんが
よろしくお願いします。

Python

1from django.db import models 2 3 4class Setting(models.Model): 5 """全体設定""" 6 send_rate = models.IntegerField('1日のDM送信数') 7 status = models.BooleanField('状態') 8 9 def __str__(self): 10 return '設定' 11 12 13class User(models.Model): 14 """ユーザー""" 15 name = models.CharField('名前', max_length=255) 16 age = models.IntegerField('年齢') 17 job = models.CharField('職業', max_length=255) 18 email = models.CharField('メールアドレス', max_length=255) 19 20 def __str__(self): 21 return self.name 22 23 24class Interest(models.Model): 25 """興味""" 26 user = models.ForeignKey(User, verbose_name='ユーザ', related_name='interests') 27 disc = models.CharField('興味', max_length=255) 28 29 def __str__(self): 30 return self.disc
tai72👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のようにするとadmin管理サイトからは2件以上データを追加することができなくなります。いかがですか。
admin.pyです

python

1from django.contrib import admin 2from .models import Setting 3 4 5class SettingAdmin(admin.ModelAdmin): 6 7 def has_add_permission(self, request): 8 return False if self.model.objects.count() > 0 else True 9 10admin.site.register(Setting, SettingAdmin)

投稿2016/11/04 01:27

toritoritorina

総合スコア972

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horik

2016/11/04 03:24

ありがとうございます。 アプリケーション全体の設定を保持するmodelっていうのはありがちな事だと思うんですが これに対応したデザインというのは特に存在しないんでしょうか? どういうことでしたらベストアンサーにさせていただきます。
toritoritorina

2016/11/04 10:14 編集

私の知る限りでは、特にそのための昨日はないように思います。 ModelのMetaオプションで色々と設定はできますが、今回の要件を満たすものはなさそうです。 https://docs.djangoproject.com/ja/1.10/ref/models/options/ この手のはサードパーティ製のライブラリなんかもあり、例えば以下です。 https://github.com/lazybird/django-solo 他のシンプルな方法ですと、Modelのsave関数を上書きする、等もできます。 ただ、私の見落としもあるかもしれないので、他の解答を見てもいいかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問