首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django get_absolute_url重定向问题

django get_absolute_url重定向问题
EN

Stack Overflow用户
提问于 2021-02-03 08:48:14
回答 1查看 28关注 0票数 0

我有一个对象,我希望它有两个get_absolute_urls,因为我有两个类别(出租,销售)。但是,如果我将get_absolute_url设置为最后一个'rents‘,则销售中的商品将重定向到’rents‘url,例如: rents/1。

我怎么才能让它起作用呢?

型号:

代码语言:javascript
运行
复制
class Listing(models.Model):
    agent = models.ForeignKey(Agent, on_delete = models.DO_NOTHING)
    title = models.CharField(max_length=120)
    address = models.CharField(max_length = 120)
    area = models.CharField(max_length=120)
    description = models.TextField(blank = True)
    price = models.IntegerField()
    bedrooms = models.DecimalField(max_digits=2, decimal_places=1)
    bathrooms = models.DecimalField(max_digits=2, decimal_places=1, blank = True, null = True)
    garage = models.IntegerField(default = 0)
    sqft = models.IntegerField()
    categories= (('sale', 'sale'),('rent','rent'))
    category= models.CharField(max_length = 10, choices= categories,  null = True)
    lot_size = models.DecimalField(max_digits=5, decimal_places=1)
    photo_main = models.ImageField(upload_to = 'photos/%Y/%m/%d/')
    photo_1 = models.ImageField(upload_to = 'photos/%Y/%m/%d/', blank = True, null = True)
    photo_2 = models.ImageField(upload_to = 'photos/%Y/%m/%d/', blank = True, null = True)
    photo_3 = models.ImageField(upload_to = 'photos/%Y/%m/%d/', blank = True, null = True)
    photo_4 = models.ImageField(upload_to = 'photos/%Y/%m/%d/', blank = True, null = True)
    is_published = models.BooleanField(default = True)
    is_featured = models.BooleanField(default = True)
    list_date = models.DateTimeField(default=datetime.now, blank = True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('sale', args=[str(self.id)])

    def get_absolute_url(self):
        return reverse('rent', args=[str(self.id)])

urls

代码语言:javascript
运行
复制
path('rents/',rents, name = 'rents'),
path('rents/<int:pk>',RentView.as_view(), name = 'rent'),

path('sales/',sales, name = 'sales'),
path('sales/<int:pk>',SaleView.as_view(), name = 'sale'),

html

代码语言:javascript
运行
复制
   <a href="{{ item_vip.get_absolute_url }}"><button class='btn-view fntmk'>View</button></a>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-03 14:08:27

由于您有两个类别rentsale,因此可以在get_absolute_url中使用if语句。

代码语言:javascript
运行
复制
def get_absolute_url(self):
    if self.category == 'sale':
        return reverse('sale', args=[str(self.id)])
    else:
        return reverse('rent', args=[str(self.id)])

但是您已经在category= models.CharField(max_length = 10, choices= categories, null = True)中设置了null=True

因此,当category为null时,需要处理这种情况。

代码语言:javascript
运行
复制
def get_absolute_url(self):
    if self.category == 'sale':
        return reverse('sale', args=[str(self.id)])
    elif self.category == 'rent':
        return reverse('rent', args=[str(self.id)])
    else:
        return '/' # Handler null case
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66019702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档