如何从Django中的先前视图(CBV)获取对象?

阿布·穆萨布

我试图从以前的DetailView中获取CreateView中的对象值。但是失败了。有没有简单的方法可以做到这一点?

在这段代码中,我如何用相册对象替换此'???'(CreateView中),而根据'item-add'(album.pk == idurl(r'^(?P<id>[0-9]+)/pic/add/$', views.ItemCreate.as_view(), name='item-add')

models.py

class Album(models.Model):
    credit = models.CharField(max_length=250)
    album_title = models.CharField(max_length=100)
    logo = models.FileField()

    def get_absolute_url(self):
        return reverse('picture:detail', kwargs={'pk': self.pk})

    def __str__(self):
        return self.album_title + ' - ' + self.credit


class Item(models.Model):
    album = models.ForeignKey(Album, on_delete=models.CASCADE)
    file_type = models.CharField(choices=TYPE_CHOICES, max_length=1)
    caption = models.CharField(max_length=100)

    class Meta:
        ordering = ('upload_date', 'caption')

    def get_absolute_url(self):
        return reverse('picture:item-detail', kwargs={ 'id': self.album_id , 'pk': self.pk})

    def __str__(self):
        return self.caption

views.py

class DetailView(generic.DetailView):
    model = Album
    template_name = 'picture/detail.html'

class ItemCreate(CreateView):
    model = Item
    fields = ['album', 'file_type', 'caption']

    def get_initial(self):
        album = ???
        return {
            'album': album,
            'file_type': 't',
        }

urls.py

urlpatterns = [
# /picture/<album_id>/
    url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
# /picture/<album_id>/<pic_id>
    url(r'^(?P<id>[0-9]+)/(?P<pk>[0-9]+)/$', views.ItemDetailView.as_view(), name='item-detail'),
# /picture/<album_id>/pic/add
    url(r'^(?P<id>[0-9]+)/pic/add/$', views.ItemCreate.as_view(), name='item-add'),
]
威廉·范昂塞姆

主键作为idURL参数传递,因此您可以使用以下命令进行访问self.kwargs

from django.shortcuts import get_object_or_404

class ItemCreate(CreateView):
    model = Item
    fields = ['album', 'file_type', 'caption']

    def get_initial(self):
        album = get_object_or_404(Album, pk=self.kwargs['id'])
        return {
            'album': album,
            'file_type': 't',
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Django CBV中显示之前如何检查对象状态

Django:如何使用先前表单中的对象来过滤对象?

如何在firebase中获取对象的先前值(值)?

获取当前对象中先前的对象值

如何在没有出现在 URL 中的 CBV 中获取 Django PK 值?

如何在Django中将对象从模型添加到CBV中?

如何从 Django 中基于类的详细信息视图中获取当前对象/产品?

Django模型:如何在我的视图中获取模型对象

无法使用 cbv 在 django 中查看我的模型对象

Django保存模型中的先前对象

Django:在clean()方法中获取先前的值

如何从Django中的模型对象获取数据

如何从 Django 对象中获取整数值?

如何从视图获取AttributeSet对象?

Django CBV AttributeError:通用详细信息视图必须使用对象pk或子弹调用

如何从iOs中的NSMutableArray获取最后一个先前的对象?

在ModelAdmin中,当覆盖`save_model()`时如何获取对象的先前值

如何通过获取先前的值来增加xts对象中的观测次数?

如何从CBV的get_context_data中获取“ pk”或“ id”?

如何获取胡子中的先前节点值

如何获取烧瓶中的先前网址

如何在JavaScript中获取先前的URL?

如何获取Javascript中的先前DOM元素?

在Django中,用户请求对象如何附加到视图?

如何在Django中的视图之间传递对象

如何重用视图来更新Django中的对象?

从Django中的视图删除对象

Django - 从对象中获取对象

Django - 从对象中获取对象