DetailView中的多个独立表单

问题描述

我有这些简化的模型。一个订单可以有多个OrderItems。 OrderItems的状态为“ A”,“ B”或“ C”。

ex <- tibble(id = c(1,1,2,2),status1 = c(3,3,5,7,7),status2 = c(3,7))

ex

myfunc <- function(df,id,var,val) {
  df <- df %>% 
    group_by(id) %>%
    mutate({{var}} := case_when(any({{var}} == val) ~ val,TRUE ~ {{var}})) %>%
    ungroup() %>% 
    select({{var}})
  return(df)
}

myfunc(ex,status1,1) 



myfunc2 <- function(df,val) {
  map_dfc(var,~myfunc(df,!!sym(.x),val)) %>%
    add_column(id = df$id,.before = 1)
}



myfunc2(ex,c("status1","status2"),1)


# this works
for (i in c(1,7)) {
  ex <- myfunc2(ex,i)
}

# this does not work
c(1,7) %>%
  map_dfc(function(x) {ex <- myfunc2(ex,x)})

# original data
# A tibble: 7 x 3
     id status1 status2
  <dbl>   <dbl>   <dbl>
1     1       3       3
2     1       3       3
3     1       5       3
4     1       7       7
5     2       1       7
6     2       5       5
7     2       7       7 

# Data after executing the for-loop
# A tibble: 7 x 3
     id status1 status2
  <dbl>   <dbl>   <dbl>
1     1       5       3
2     1       5       3
3     1       5       3
4     1       5       3
5     2       1       5
6     2       1       5
7     2       1       5

当前,我使用一个DetailView,它显示一个Order并遍历OrderItems。每个OrderItem都有一个指向UpdateView的链接,以更新状态:

views.py

class OrderItem(models.Model):

    STATUS_CHOICES = (
        ("A","A"),("B","B"),("C","C"),)
    name = CharField(max_length=100)
    status = models.CharField(choices=STATUS_CHOICES,blank=False,default="A",max_length=1)   

    def __str__(self):
        return self.name


class Order(models.Model):
    items = models.ManyToManyField(OrderItem)

    def __str__(self):
        return self.pk

模板

class DetailOrder(DetailView):
    model = Order

现在,我的问题是:对于每个订单项,我将如何处理一个独立的表单,以便直接在DetailView中更新状态,而不是直接链接到UpdateView。那有可能吗? 这样的东西,只是为了说明这个想法:

{% for orderitem in object.items.all %}
    {{orderitem}}
    <a href={% url 'some-updateview' orderitem.pk %}>Update Status</a>
{% endfor %}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...