2017-07-10 3 views
1

私の問題を解決するためにあなたの助けを得たいと思います。modelfieldからDjangoオブジェクトを取得するManytoMany

私はDjangoアプリケーションを持っています.Djangoアプリケーションは、重要なモデルのID:Societeという名前です。 Identity_societe私は私のモデル、登場しているように見える新しいテーブルIdentity_societe_user移行

enter image description here

class Societe(models.Model): 

    Nom = models.CharField(null= False, max_length=70, verbose_name='Nom de Société') 
    ... 
    #Some model fields 
    ... 
    user = models.ManyToManyField(settings.AUTH_USER_MODEL, verbose_name="User Access", default=" ") 

このモデルは、テーブルとしての私のデータベースに保存されます

enter image description here

この表はあるsociete = get_object_or_404(Societe, pk=id, user=request.user)

私の問題との一つまたは複数のユーザーのSocieteページへのアクセスを提供します:Identity_societe_user:私はこの表からオブジェクトを取得するために克服していません。 私はたくさんのことを試しました:Societe_userSociete_UserSociete.user、...でも今までは何もありませんでした。


EDIT:

私はいくつかのことを更新します。私のmodel

、私が持っている:私のviewuser = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name="User Access", default=" ")

を、私はsociete = get_object_or_404(Societe, pk=id, user=request.user)

を持っているので、どのようにI次のようなものを書くことができます:

societe = get_object_or_404(Societe, pk=id, user=request.user and user.username=="Admin") 

にForeignKeyを持つ管理ユーザーとユーザーをSocieteモデルから許可するには、

+1

のようなif文を追加することができ、非常によくあなたの質問を理解してなかったが?彼らは文字通りユーザーとソシエテの間のリンクです。 –

+0

'user_id = 3'の' societe_id'を取り上げる必要があります(例です)。 'http:// myapplication/Societe/+ str(societe_id)' – Deadpool

+1

これは多対多リレーションシップです。ユーザー3には** **複数のソーシャルIDがあります。必要なのは、ForeignKeyなどの異なるリレーションシップタイプを使用する必要があります。 –

答えて

1

私はあなたがそのテーブルからオブジェクトをしたいですかなぜ、あなたのビューであなたが

if request.user.username == 'Admin': 
    .... 
    return #all the societe page 
else: 
    societe = get_object_or_404(Societe, pk=id, user=request.user) 

それとも

if request.user.is_superuser: 
    .... 
    return #all the societe page 
else: 
    societe = get_object_or_404(Societe, pk=id, user=request.user) 
+1

ありがとうございます!私は本当に吸うよ...たぶん疲れた:/ – Deadpool

関連する問題