2016-10-13 4 views
0

私は自分のプロジェクトに以下の2つのアプリケーション:account_appとimage_appを持っています。Django ORM、リレーションシップの属性にアクセスする

ユーザー(django bultin)とOneToOneの関係を持ち、画像user_likeとManyToMany関係にある1つのプロファイルの好きな数に直接アクセスできるかどうかは疑問です。

account_app/models.py

class Profile(models.Model): 
    # quando usar a relacao nao colocar o nome User de vez, tem que usar dessa forma 
    # essa relacao nos permite linkar o perfil com o usuario 
    user = models.OneToOneField(settings.AUTH_USER_MODEL) 
    date_of_birth = models.DateField(blank=True, null=True) 
    photo = models.ImageField(upload_to='users/%Y/%m/%d', blank=True) 

image_app/models.py

class Image(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='images_created') 
    title = models.CharField(max_length=200) 
    slug = models.SlugField(max_length=200, blank=True) 
    url = models.URLField() 
    image = models.ImageField(upload_to='images/%Y/%m/%d') 
    description = models.TextField(blank=True) 
    created = models.DateField(auto_now_add=True, db_index=True) 
    users_like = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='images_liked',blank=True) 

答えて

1

また、プロファイルモデルにプロパティlikesを導入することができます。

class Profile(models.Model): 
    # quando usar a relacao nao colocar o nome User de vez, tem que usar dessa forma 
    # essa relacao nos permite linkar o perfil com o usuario 
    user = models.OneToOneField(settings.AUTH_USER_MODEL) 
    date_of_birth = models.DateField(blank=True, null=True) 
    photo = models.ImageField(upload_to='users/%Y/%m/%d', blank=True) 

    @property 
    def likes(self): 
     self.user.images_liked.count() 
0

プロフィールインスタンスprofileを考えると、あなたは多くのを得ることができますusers_likeと:

number_of_likes = profile.user.images_liked.count() 
関連する問題