Ich versuche, 3 Arten von Feeds zu implementieren:
Ich verwende die Feedklasse , den Feedtyp und für jeden Typ eine bestimmte Klasse, weiß aber nicht, wie ich die Feedklasse mit jeder Typklasse (Videoklasse, Bildklasse) verbinden soll.
Irgendein Vorschlag?
Danke für die Unterstützung
@sebastian-code Ich kenne diese Funktion, weiß aber nicht, wie ich die zusätzlichen Felder aus dem Bild- oder Video-Feed in die Ansicht bekomme.
Das ist mein 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
Dies ist die klassische Ansicht.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
})
Nichts was ich gelöst habe!
Ich konnte Ihre Anforderung nicht ganz nachvollziehen, aber ich freue mich, dass Sie sie gelöst haben. Bei der Funktionalität bin ich mir noch nicht sicher, aber ich denke, Sie wählen einen wirklich komplexen Weg, um sie zu implementieren. Sie könnten auch das ursprüngliche Feed-Modell in ein abstraktes Modell umwandeln und die anderen davon erben.
Ist verwirrend, sorry :( ich weiß
2017-12-06 17:42 GMT+01:00 Sebastian Reyes Espinosa <
[email protected]>:
Ich konnte dein Anliegen nicht ganz nachvollziehen, aber ich freue mich über dich
Ich habe es gelöst. Über die Funktionalität bin ich mir noch nicht sicher, aber ich denke du
Wählen Sie einen wirklich komplexen Weg, um ihn zu implementieren
original Feed-Modell in ein abstraktes Modell und erben davon die anderen.—
Sie erhalten dies, weil Sie den Thread verfasst haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/vitorfs/bootcamp/issues/131#issuecomment-349699018 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AVdMg0p3EAdKYXbMA6XV9WuRamCWcUU_ks5s9sQKgaJpZM4Q3oVG
.
@sebastian-code Weil die anderen Arten von Feeds eine Art Sohn sind..
Dies ist mein Beispiel im Admin-Panel :)
Es sieht wirklich gut aus, danke fürs Teilen; Wie ich bereits sagte, konnte ich Ihre Anforderungen und die Ziele, die Sie sich für Ihr Projekt gesetzt haben, nicht vollständig verstehen. Es wäre schön, wenn es fertig ist, also lass es mich wissen, wenn du es hast, vielleicht gibt es etwas daraus zu lernen und hier umzusetzen.
@Allan-Nava Ich plane, verschiedene Arten von Feeds wie Sie zu erstellen. Könnten Sie mir Ihren Kontakt Facebook oder Skype teilen?
@feedgit Was brauchst du?
Bitte fügen Sie mein Skype hinzu: kai_trystan7 :)