2017-05-18 10 views
0

私はウェブサイトを追跡し、そのユーザーに固有のものにしたいと考えているモデルがあります。たとえば、サイトがgoogle.comの場合、ユーザーは一度しか入力できませんが、複数のユーザーがgoogle.comを入力できるようになります。より良いアイデアを提供するには、私のmodels.py:ユーザー固有のエントリ

class Site(models.Model): 
    url = models.CharField(max_length=500) 
    tag = models.ForeignKey(Tag) 
    user = models.ForeignKey('customauth.UserProfile') 

ユーザにURLフィールドをユニークにする方法はありますか?

答えて

2

あなたはunique_together constraintを使用することができ、

class Site(models.Model): 
    url = models.CharField(max_length=500) 
    tag = models.ForeignKey(Tag) 
    user = models.ForeignKey('customauth.UserProfile') 

    class Meta: 
     unique_together = ('url', 'user') 

このオプションは、ユーザーが独自のURLを作成することができ、他のDjangoはエラーを発生させます。 1人のユーザーが同じURLの2つのオブジェクトを作成することはできません。

制約違反時にモデル検証中に発生したValidationErrorには、unique_togetherエラーコードがあります。

+0

adminに同じURLを持つ2番目のサイトを保存すると、名前(私は 'return self.url'に設定されています)が空白として表示されることを除いて、新しいエントリが作成されます。フィールドの1つが外部キーなので、できますか? – ng150716

+0

私は自分のマシンで同じことを試みました。サイトが作成され、同じユーザーと別のタグが作成されていますが、同じURLが試されています。しかし、管理者は、私のためにエラーを発生させる – zaidfazil

関連する問題