J'essaie de mettre en œuvre 3 types de flux :
J'utilise la classe d'alimentation, le type d'alimentation et pour chaque type d' une classe spécifique , mais je ne sais pas comment connecter la classe d'alimentation avec chaque classe de type (classe vidéo, classe d'image)
Toute suggestion?
Je vous remercie pour le soutien
@sebastian-code Je réalise cette fonctionnalité, mais je ne sais pas comment puis-je obtenir les champs supplémentaires du flux d'images ou du flux vidéo à l'intérieur de la vue.
C'est mon 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
C'est classique 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
})
Rien que j'ai résolu !
Je n'ai pas pu comprendre complètement votre exigence, mais je suis heureux que vous l'ayez résolu. La fonctionnalité, je n'en suis pas encore certain, mais je pense que vous choisissez un chemin vraiment complexe pour l'implémenter, vous pouvez également transformer le modèle Feed d'origine en un modèle abstrait et en hériter les autres.
C'est déroutant, désolé :( je sais
06/12/2017 17:42 GMT":" Sebastian Reyes Espinosa <
[email protected]> :
Je n'ai pas pu comprendre complètement votre exigence, mais je suis heureux que vous
résolu. La fonctionnalité, je n'en suis pas encore certain, mais je pense que vous
choisir un chemin vraiment complexe pour le mettre en œuvre, vous pouvez également transformer le
modèle original Feed à un modèle abstrait et hériter de celui-ci les autres.-
Vous recevez ceci parce que vous avez créé le fil.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/vitorfs/bootcamp/issues/131#issuecomment-349699018 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AVdMg0p3EAdKYXbMA6XV9WuRamCWcUU_ks5s9sQKgaJpZM4Q3oVG
.
@sebastian-code Parce que les autres types de flux sont en quelque sorte des fils..
Ceci est mon exemple dans le panneau d'administration :)
Ça a l'air vraiment sympa, merci pour le partage; comme je l'ai déjà dit, je pense que je n'ai pas été en mesure de comprendre pleinement l'ensemble de vos besoins et les objectifs que vous vous êtes fixés pour votre projet. Ce serait bien de le voir une fois terminé, alors faites le moi savoir quand vous l'aurez, peut-être y a-t-il quelque chose à apprendre et à mettre en œuvre ici.
@Allan-Nava Je prévois de créer différents types de flux comme vous. Pourriez-vous me partager votre contact facebook ou skype ?
@feedgit De quoi avez-vous besoin ?
Veuillez ajouter mon Skype : kai_trystan7 :)