2

次のような 3 つのモデルがあるとします。

 class video(models.Model):
       name=models.CharField(max_length = 100)

 class image(models.Model):
       name=models.CharField(max_length = 100)

 class comments(models.Model):
       content=models.CharField(max_length = 100)

動画や画像にコメントが付けられた場合にユーザーに通知したい

これは私が欲しいものです

メッセージモデル:

class message(models.Model):
       type=models.CharField(max_length = 100) # 'video' or 'image'
       video_or_image=models.ForeignKey(video or image)

       #the type is just a string to tell if the comment is about the video or image
       #video_or_image need to be video foreignkey or image foreignkey depends on type

出来ますか。

私は現在、2つの方法でこれを回避しています

最初:</p>

   class message(models.Model):
       type = models.CharField(max_length = 100) # 'video' or 'image'
       video_or_image_id = models.IntegerField(default = 1)
       # 

2番目

  class message(models.Model):
       type=models.CharField(max_length = 100) # 'video' or 'image'
       video=models.ForeignKey(video)
       image=models.ForeignKey(image)
       # if the comment is about video just leave the image empty

1 つのフィールドから複数のモデルへの変換ができない場合は、どの回避方法が優れているか、またはより良い方法で私を助けてください!

4

1 に答える 1

6

を探していGenericForeignKeyます。

これは、contrib.commentsがコメントをコメント付きアイテムに関連付ける方法でもあります。

于 2013-01-10T06:53:14.027 に答える