2017-10-21 6 views
1

私はレストランについてのアプリケーションを持っています。開閉時間を設定できます。私はこのような2つの時間フィールドを追加することでそれを行います。場所の開閉時間を表すカスタムDjangoモデルフィールドを作成する方法

class Place(models.Model): 
    # other fields 
    opening = models.TimeField() 
    closing = models.TimeField() 

ただし、このようなカスタムフィールドを1つ使用したいと考えています。

class Place(models.Model): 
    # other fields 
    operating_hours = models.DualTimeField() 
+0

は、あなたがこれをしたい理由はありますか?あなたはそのようなタイプをサポートするデータベースを持っていますか?いいえの場合は、そのフィールドをどのようにデータベースに保存しますか? varcharとして?はいの場合は、あなたの場所が開いたときにどのようにデータベースにクエリを行いますか? – Serafeim

+0

その理由は、レストランの営業時間が1つの資産(営業時間)を表しているからです。彼らは別々のものではありません。だからこそ私はそれをしたいのです。または、たとえば、min-maxフィールドが必要な場合があります。私はそれらをJsonFieldなどで表すことができます。私はあなたの質問の答えのすべてを持っていたら、なぜ私はここにそれを掲示しなければならないのですか? –

+0

データベースでネイティブにサポートされていないフィールドを使用すると、問題が発生することを理解しています。開いている時間をvarcharに保存するのは今のところスマートに見えるかもしれませんが、開かれている場所が午前1時であることを知りたいときはどうなりますか?または、午前2時に*多くの場所が開かれていることを知りたいですか? – Serafeim

答えて

1

1)CharFieldですを使用してプロパティを使用してモデル内の文字列を解析し、例えば "HH:MM - HH:MM":場合 https://docs.djangoproject.com/en/1.10/ref/models/fields/#durationfield ジャンゴネイティブDurationFieldを使用

2)オープニング時間をモデル化して、オープニング時間を定義するために2番目のフィールドが必要な場合は、タイムデータを処理しています。

3)他のすべてのように2つのTimeFieldを使用します。

4)別のオプションは、ユーザーが場所が開いている時間帯を選択できるMultiSelectFieldです。

OPENING_HOURS = (
    (1,'1am'), 
    (2,'2am'), 
    (3,'3am'), 
    (4,'4am'), 
    ... 
    (12,'12pm'), 
) 

class Place(models.Model): 
    # other fields 
    operating_hours = models.my_field = MultiSelectField(choices=MY_CHOICES) 

参照:https://pypi.python.org/pypi/django-multiselectfield

+0

ありがとうございました。私は最初のものを使うつもりです。 –

+0

私は4番目の選択肢も面白いかもしれないと思います。 – rollinger

+0

私はそうは思わない。このオプションを使用すると、ユーザーはすべての営業時間を手動で選択する必要があるためです。 –

関連する問題