2

私のアプリでは、ユーザーがボードを作成して写真を追加できます。

私の目的は、ボードをその画像リストのプライマリ画像に関連付けることです。状況を説明するために最善を尽くします。ユーザーがボードを作成するときに、すべてのボードにその画像リストのメイン画像を表示しようとしています。彼は自分のボードに写真を追加することができます。今度は、その写真の1つをボードに関連付けて表示したいと思います。例を挙げましょうここに画像の説明を入力してください

そこで、OneToOneFieldを使用してボードをプライマリ画像に関連付けようとしましたが、このエラーが発生しました。ボードを作成すると、pet_board.picture_idがNULLにならない可能性があります。

私のmodels.py

class Board(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100)
    picture = models.OneToOneField('Picture',related_name='picture',blank=True,null=True)
    def __unicode__(self):
        return self.name

class Picture(models.Model):
    user = models.ForeignKey(User)
    board = models.ForeignKey(Board ,related_name='lo')

    image = models.FileField(upload_to="images/",blank=True,null=True)
    description = models.TextField()
    def __unicode__(self):
        return self.description
4

2 に答える 2

2

models.py

class Board(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100)

class Picture(models.Model):
    user = models.ForeignKey(User)
    board = models.ForeignKey(Board)
    image = models.FileField(upload_to="images/",blank=True,null=True)
    description = models.TextField()
    is_primary = models.BooleanField(default=False)

    def __unicode__(self):
        return self.description

views.py

def index(request):
    obj_board = Board.objects.get(user=request.user)
    obj_image = obj_board.picture_set.filter(is_primary=True)
    print obj_image.image.url  # output url in dev-server for tests
    # ... do something and return httpresponse
于 2013-03-14T07:50:58.220 に答える
2
class Board(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100)
    picture = models.OneToOneField('Picture',related_name='picture',blank=True,null=True)

    def __unicode__(self):
        return self.name

    def primary_picture(self): 
        return Picture.objects.filter(board=self, is_primary=True)

    def ordinary_picture(self): 
        return Picture.objects.filter(board=self, is_primary=False)

class Picture(models.Model):
    user = models.ForeignKey(User)
    board = models.ForeignKey(Board ,related_name='lo')
    image = models.FileField(upload_to="images/",blank=True,null=True)
    description = models.TextField()
    is_primary = models.BooleanField(default=False)

    def __unicode__(self):
        return self.description

{% for b in person.get_board %}  
    My Primary Pictures:
    {% for primary in b.primary_picture %}
        <img src="{{ primary.image.url }}">
    {% endfor %}

    My Ordinary Pictures:
    {% for ord in b.ordinary_picture %}
        <img src="{{ ord.image.url }}">
    {% endfor %}
{% endfor %}
于 2013-03-14T08:14:23.543 に答える