Bootcamp: Pakan dengan berbagai jenis umpan

Dibuat pada 6 Des 2017  ·  9Komentar  ·  Sumber: vitorfs/bootcamp

Saya mencoba menerapkan 3 jenis umpan:

  1. Status (umpan pesan)
  2. Umpan video
  3. Umpan gambar

Saya menggunakan kelas umpan , jenis umpan dan untuk setiap jenis kelas tertentu tetapi saya tidak tahu bagaimana menghubungkan kelas umpan dengan setiap kelas jenis (kelas video, kelas gambar)

Ada saran?

Terima kasih atas dukungannya

Support enhancement question

Semua 9 komentar

@sebastian-code Saya menyadari fitur ini, tetapi saya tidak tahu bagaimana saya bisa mendapatkan bidang tambahan dari umpan gambar atau umpan video di dalam tampilan.

Ini kode saya:

<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

Ini adalah tampilan klasik.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
        })

Tidak ada yang saya pecahkan!

screen shot 2017-12-06 at 15 57 52

Saya tidak dapat memahami sepenuhnya kebutuhan Anda, tetapi saya senang Anda menyelesaikannya. Fungsionalitasnya, saya belum yakin tentangnya, tetapi saya pikir Anda memilih jalur yang sangat kompleks untuk mengimplementasikannya, Anda juga dapat mengubah model Feed asli menjadi model abstrak dan mewarisi model lainnya.

Membingungkan, maaf :( aku tahu

06-12-2017 17:42 GMT+01:00 Sebastian Reyes Espinosa <
[email protected]>:

Saya tidak dapat memahami sepenuhnya kebutuhan Anda, tetapi saya senang Anda
memecahkannya. Fungsionalitasnya, saya belum yakin tentang itu, tapi saya pikir Anda
memilih jalur yang sangat kompleks untuk mengimplementasikannya, Anda juga dapat mengubah
model Feed asli ke model abstrak dan mewarisi model lainnya.


Anda menerima ini karena Anda yang menulis utas.
Balas email ini secara langsung, lihat di GitHub
https://github.com/vitorfs/bootcamp/issues/131#issuecomment-349699018 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AVdMg0p3EAdKYXbMA6XV9WuRamCWcUU_ks5s9sQKgaJpZM4Q3oVG
.

@sebastian-code Karena jenis feed yang lain adalah jenis anak..

Ini adalah contoh saya di panel admin :)
screen shot 2017-12-06 at 17 17 43
screen shot 2017-12-06 at 17 17 31

Kelihatannya sangat bagus, terima kasih telah berbagi; seperti yang saya nyatakan sebelumnya, saya pikir saya belum dapat memahami sepenuhnya seluruh kebutuhan Anda dan tujuan yang telah Anda tetapkan untuk proyek Anda. Akan menyenangkan untuk melihatnya setelah selesai, jadi beri tahu saya ketika Anda memilikinya, mungkin ada sesuatu untuk dipelajari dan diterapkan di sini.

@Allan-Nava Saya berencana membuat berbagai jenis umpan seperti Anda. Bisakah Anda membagikan saya kontak Anda facebook atau Skype?

@feedgit Apa yang Anda butuhkan?

Tolong Tambahkan Skype saya: kai_trystan7 :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

ssahilsahil798 picture ssahilsahil798  ·  5Komentar

mwanjajoel picture mwanjajoel  ·  5Komentar

yashLadha picture yashLadha  ·  21Komentar

Shekharnunia picture Shekharnunia  ·  6Komentar

phamminhtris picture phamminhtris  ·  12Komentar