상황을 모델링하고 싶습니다. 문제를 해결하는 데 어려움이 있습니다. 도메인은 다음과 같습니다. 게시물이 있으며 모든 게시물은 MediaContent와 일대일로 연결되어야합니다. MediaContent는 그림이나 비디오 일 수 있습니다 (현재는 나중에 음악 일 수 있습니다). 그래서, 내가 무슨입니다장고의 일반적인 취급 문제 처리
mediacontents/models.py
class MediaContent(models.Model):
uploader = models.ForeignKey(User)
title = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
def draw_item(self):
pass
class Meta:
abstract = True
class Picture(MediaContent):
picture = models.ImageField(upload_to='pictures')
class Video(MediaContent):
identifier = models.CharField(max_length=30) #youtube id
게시물/models.py 내가 결국 같은 메소드를 호출 할 수 beeing는되고 싶지 무엇
class Post(models.Model):
...
# link to MediaContent
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
media_content = generic.GenericForeignKey('content_type', 'object_id')
:
post1.media_content.draw_item()
>> <iframe src="youtube.com" ...>
post2.media_content.draw_item()
>> <img src="..."/>
올바른 방법인가요? 작동합니까? 템플릿이 그 대상에 대해 불가지론 할 수 있습니까?
문제가 없습니다. media_content 유형 (그림 또는 비디오)의 차이를 설명하도록 메소드를 정의하면 OK입니다. 전혀 어려워 보이지 않습니다. – JEEND0