私は3種類のフィードを実装しようとしています:
フィードクラス、フィードタイプ、および各タイプに特定のクラスを使用していますが、フィードクラスを各タイプクラス(ビデオクラス、画像クラス)に接続する方法がわかりません
なにか提案を?
サポートをありがとう
@ sebastian-codeこの機能はわかりましたが、ビュー内の画像フィードまたはビデオフィードから追加のフィールドを取得する方法がわかりません。
これは私のコードです:
<strong i="7">@python_2_unicode_compatible</strong>
class Feed(models.Model):
#STATUS OF FEEDS
DRAFT = 'D'
PUBLISHED = 'P'
INVISIBLE = 'I'
VISIBLE = 'V'
# #TYPE OF FEEDS
TYPE_STATUS = 'STATUS'
# TYPE_IMG = 'IMAGE'
# TYPE_VOD = 'VIDEO'
# TYPE_MATCH = 'MATCH'
STATUS = (
(DRAFT, 'Draft'),
(PUBLISHED, 'Published'),
)
user = models.ForeignKey(User)
date = models.DateTimeField(auto_now_add=True)
post = models.TextField()
parent = models.ForeignKey('Feed', null=True, blank=True)
likes = models.IntegerField(default=0)
comments = models.IntegerField(default=0)
#post_type = models.TextField(null=True, blank=True)
#media_url = models.TextField(null=True, blank=True)
media_url = None
#Custom fields
post_type = models.ForeignKey('FeedType')
status = models.CharField(max_length=1, choices=STATUS, default=DRAFT)
tags = TaggableManager()
specific_post = models.IntegerField(default=0)
class Meta:
verbose_name = _('Feed')
verbose_name_plural = _('Feeds')
ordering = ('-date',)
#
class FeedType(models.Model):
feed_type = models.CharField(max_length=255, default=Feed.TYPE_STATUS)
class Meta:
verbose_name = _('FeedType')
verbose_name_plural = _('FeedTypes')
ordering = ('pk',)
def __str__(self):
return self.feed_type
#method
<strong i="8">@staticmethod</strong>
def get_status_type():
print("get_status_type();")
feed_type = FeedType.objects.get(pk=1)
return feed_type
<strong i="9">@staticmethod</strong>
def get_image_type():
print("get_image_type();")
feed_type = FeedType.objects.get(pk=2)
return feed_type
<strong i="10">@staticmethod</strong>
def get_video_type():
print("get_video_type();")
feed_type = FeedType.objects.get(pk=3)
return feed_type
<strong i="11">@staticmethod</strong>
def get_match_type():
print("get_match_type();")
feed_type = FeedType.objects.get(pk=4)
return feed_type
'''
IMAGE FEED
'''
class ImageRelationsMixin(object):
class FeedManagerMeta:
image_feed = 'feeds.ImageFeed'
<strong i="12">@property</strong>
def Feed(self):
feed_model_path = getattr(self.FeedManagerMeta, 'feed', 'feeds.ImageFeed')
#print(django_get_model(*feed_model_path.split('.')))
return django_get_model(*feed_model_path.split('.'))
class ImageFeedMixin(ImageRelationsMixin, models.Model):
"""ImageFeed represents .
:Parameters:
- ``: member's first name (required)
"""
content_url = models.TextField(null=True, blank=True, default='')
class Meta:
abstract = True
def __unicode__(self):
return self.post
def __str__(self):
return self.post
class ImageFeed(Feed, ImageFeedMixin):
'''django_user = models.ForeignKey(DjangoUser, null=True, blank=True, on_delete=models.SET_NULL,
related_name='%(app_label)s_%(class)s_set')'''
django_feed = models.ForeignKey(Feed, null=True, blank=True, on_delete=models.SET_NULL,
related_name='%(app_label)s_%(class)s_set')
# this is just required for easy explanation
class Meta(ImageFeedMixin.Meta):
abstract = False
'''
Video FEED
'''
class VideoRelationsMixin(object):
class FeedManagerMeta:
video_feed = 'feeds.VideoFeed'
<strong i="13">@property</strong>
def Feed(self):
feed_model_path = getattr(self.FeedManagerMeta, 'feed', 'feeds.VideoFeed')
#print(django_get_model(*feed_model_path.split('.')))
return django_get_model(*feed_model_path.split('.'))
class VideoFeedMixin(VideoRelationsMixin, models.Model):
"""VideoFeed represents .
:Parameters:
- `media_url`: member's first name (required)
"""
content_url = models.TextField(null=True, blank=True, default='')
class Meta:
abstract = True
def __unicode__(self):
return self.post
def __str__(self):
return self.post
#Feed di tipo Video
class VideoFeed(Feed, VideoFeedMixin):
django_feed = models.ForeignKey(Feed, null=True, blank=True, on_delete=models.SET_NULL,
related_name='%(app_label)s_%(class)s_set')
# this is just required for easy explanation
class Meta(VideoFeedMixin.Meta):
abstract = False
これは古典的なview.pyです
<strong i="6">@login_required</strong>
def feeds(request):
all_feeds = Feed.get_feeds()
paginator = Paginator(all_feeds, FEEDS_NUM_PAGES)
feeds = paginator.page(1)
from_feed = -1
vip = Feed.get_talentini(request.user)
user_vip = Feed.get_user_talentino(request.user)
if feeds:
from_feed = feeds[0].id
return render(request, 'feeds/feeds.html', {
'feeds': feeds,
'from_feed': from_feed,
'page': 1,
'vip':vip,
'user_vip':user_vip
})
私は何も解決しませんでした!
あなたの要求を完全に理解することはできませんでしたが、あなたがそれを解決してくれてうれしいです。 機能についてはまだわかりませんが、実装するには非常に複雑なパスを選択すると思います。元のフィードモデルを抽象モデルに変換して、他のモデルから継承することもできます。
紛らわしいです、ごめんなさい:(私は知っています
2017-12-06 17:42 GMT + 01:00セバスチャンレイエスエスピノサ<
[email protected]>:
私はあなたの要件を完全に理解することができませんでしたが、私はあなたをうれしく思います
それを解決しました。 機能性、まだ定かではありませんが、あなただと思います
それを実装するために本当に複雑なパスを選択してください、あなたはまた変換することができます
元のフィードモデルを抽象モデルにフィードし、そこから他のモデルを継承します。—
スレッドを作成したため、これを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/vitorfs/bootcamp/issues/131#issuecomment-349699018 、
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AVdMg0p3EAdKYXbMA6XV9WuRamCWcUU_ks5s9sQKgaJpZM4Q3oVG
。
@ sebastian-code他の種類のフィードは一種の息子だからです。
これは管理パネルでの私の例です:)
共有してくれてありがとう。 前にも言ったように、私はあなたの要件全体とあなたがあなたのプロジェクトに設定した目標を完全に理解することができなかったと思います。 終わったらそれを見るのがいいので、あなたがそれを持っているときに私に知らせてください、おそらくそれから学びそしてここで実装する何かがあります。
@ Allan-Nava私はあなたのようなさまざまな種類のフィードを作成することを計画しています。 連絡先のFacebookまたはSkypeを教えていただけますか?
@feedgit何が必要ですか?
私のSkypeを追加してください:kai_trystan7 :)