如何在django视图中使用Django模型方法

时间:2013-08-20 12:21:47

标签: python django django-models django-views

我正在尝试在视图中使用Django模型方法。

模型:

class stores(models.Model):
    """ This is the store model """

    seo_url = models.URLField()                                                          # SEO URL for flipdiscounts.in
    storeURL = models.URLField()                                                         # Store URL
    fallBackURL = models.URLField()                                                      # Fallback URL for couponURL          
    storeDescription = models.TextField()                                                # Store Description
    storeTags = models.ManyToManyField(tags)                                             # All the tags associated with the store
    storeName = models.CharField(max_length=30)                                          # Store Name
    storeSlug = models.CharField(max_length=400)                                         # This is the text you see in the URL
    updatedAt = models.DateTimeField(auto_now=True)                                      # Time at which store is updated
    storeImage = models.ImageField(upload_to="images")                                   # Store Image 
    createdAt = models.DateTimeField(auto_now_add=True)                                  # Time at which store is created
    hash = models.CharField(max_length=10,unique=True)                                   # Tag Hash for flipdisconts.in
    storePopularityNumber = models.IntegerField(choices=PRIORITY_CHOICES,default=3)      # Store Popularity Number  


    def Store_Tags(self):
        """Method to return tags related to store"""
        return ','.join([t.tagSlug for t in self.storeTags.all()])

    def tagHash(self):
        """Method to get tag hash related to store for flipdiscounts.in"""
        return ','.join([t.hash for t in self.storeTags.all()])

    def store_URL(self):
        """Method to return store URL for flipdiscounts.in"""
        return self.seo_url + _storeURL + self.hash

    def StoreCoupons(self):
        """Method to return coupons related to store"""
        for t in stores.objects.filter(storeName=self.storeName):
            return ",".join([(a.couponTitle) for a in t.coupons_set.all()])

    def StoreCouponsId(self):
        """Method to return coupons ID related to store"""
        for t in stores.objects.filter(storeName=self.storeName):
            return ",".join([str(a.id) for a in t.coupons_set.all()])

    def CouponsCount(self):
        """Method to return coupons count related to store"""
        for t in stores.objects.filter(storeName=self.storeName):
            count = ",".join([str(a.id) for a in t.coupons_set.all()])
            count = count.split(',')
            count = filter(None,count)
            return len(count)

    def StoreImage(self):
        """Method to return store image for admin panel"""
        return '<img src="/store%s" height="150" width="150"/>' % self.storeImage
    StoreImage.allow_tags = True

    def StoreURL(self):
        """Method to return store URL"""
        return '<a href="%(url)s" target="_blank">%(url)s</a>' %{"url":self.storeURL}
    StoreURL.allow_tags = True

    def imageURL(self):
        """Method to return store Image related to store"""
        return  SERVER_ADDRESS + "store%s"  % self.storeImage 

    class Meta:
        """Meta class to control display Behavior of the Model name """
        verbose_name_plural = "Stores"

    def __unicode__(self):
        """Method to display string correctly"""
        return unicode(self.storeName)

    def save(self, *args, **kwargs):

        self.hash = _generateHash()                                                      # Generate Hash for flipdiscounts.in
        self.seo_url = "discounts-in-" + self.storeName.replace(".","-")                 # Generate SEO URL for flipdiscounts.in        
        super(stores, self).save(*args, **kwargs)    




class tags(models.Model):
    """ This is the tag model """

    seo_url = models.URLField()                                                 # SEO URL for flipdiscounts.in
    tagDescription = models.TextField()                                         # Tag Description
    tag = models.CharField(max_length=200)                                      # Tag name
    tagSlug = models.CharField(max_length=400)                                  # Extra info can be added to the existing tag using this field
    updatedAt = models.DateTimeField(auto_now=True)                             # Time at which tag is updated
    createdAt = models.DateTimeField(auto_now_add=True)                         # Time at which tag is created
    hash = models.CharField(max_length=10,unique=True)                          # Tag Hash for flipdiscounts.in

    def save(self, *args, **kwargs):
        """Custom Save method for tags model """
        self.hash = _generateHash()                                                 # Generate Hash for flipdiscounts.in
        self.seo_url = "coupons-in-" + self.tagSlug.replace(".","-")                # Generate SEO URL for flipdiscounts.in        
        super(tags, self).save(*args, **kwargs)    

    def __unicode__(self):
        """Method to display string correctly"""
        return unicode(self.tag)

    def storeNames(self):
        """Method to get store related to tag"""
        for t in tags.objects.filter(tag=self.tag):
            return ",".join([str(a.storeName) for a in t.stores_set.all()])

    def storeHash(self):
        """Method to get store hash related to tag for flipdiscounts.in"""
        for t in tags.objects.filter(tag=self.tag):
            return ",".join([str(a.hash) for a in t.stores_set.all()])

    def tagURL(self):
        """Method to return tag URL for flipdiscounts.in"""
        return self.seo_url + _tagURL + self.hash

    def couponsId(self):
        for t in tags.objects.filter(tag=self.tag):
            for a in t.stores_set.all():
                return ",".join([str(i.id) for i in a.coupons_set.all()])                     

    class Meta:
        """Meta class to control display Behavior of the Model name """
        verbose_name_plural = "Tags"

如何在views.py中使用tags.storeNames()。有人可以帮助我吗

2 个答案:

答案 0 :(得分:1)

这有效:

for i in tags.objects.filter():
    print i.storeNames()

谢谢你的小费......

答案 1 :(得分:0)

from appname.models import tags

tagObj = tags()
tagObj.storeNames()