Как я могу исправить «Менеджер не доступен через экземпляры Weekstaat»? - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь изменить статус на «ingedient».Когда я нажимаю кнопку «indienen», появляется эта ошибка: Менеджер не доступен через экземпляры Weekstaat.Как я могу исправить эту ошибку? ------------

это мой index.html

<form action="{% url 'weekstaat-indienen' Weekstaat.id  %}" method=POST>
                       {% csrf_token %}
                      <button id="approve-btn" type="submit">Approve</button>
                     </form>
                  </td>
                  <td class="text-center">
                      <button type="button" class="read-Contract btn btn-sm btn-primary" data-id="{% url 'read_Weekstaat' Weekstaat.id %}">
                        <span class="fa fa-eye"></span>
                      </button>
                      <button type="button" class="update-Contract btn btn-sm btn-primary" data-id="{% url 'update_Weekstaat' Weekstaat.id %}">
                        <span class="fa fa-pencil"></span>
                      </button>
                  </td>
                  </tr>
                  {% endfor %}
                </tbody>
              </table>
            {% else %}
              <p class="text-primary">U heeft nog geen Weekstaat</p>
            {% endif %}
          </div>
        </div>

      </div>
    </div>
  </div>

  <script type="text/javascript">

    function bevestigIndienen(){
        if(confirm('U staat op het punt een weekstaat in te dienen. Weet u het zeker?') != true){
            document.getElementById('formulierIndienen').action = '';
            window.location.href = "{% url 'home' %}";
        }
    }

это мой view.py

def indienen(request, id):
    global Weekstaat
    Weekstaat = Weekstaat.objects.get(pk=id)
    Weekstaat.Status = 'Ingedient'
    Weekstaat.save()
    return redirect('../../weekstaat')

это мой model.py

class Weekstaat(models.Model):
    id = models.AutoField(primary_key=True, null=False, blank=False)
    status = models.CharField(max_length=11, choices=STATUS_CHOICES, default='Niet ingediend',)
    jaar = models.ForeignKey(Jaar, default=datetime.now().year, null=False, blank=False,on_delete=models.CASCADE)
    week = models.ForeignKey(Week, default=date.today().isocalendar()[1], null=False, blank=False,on_delete=models.CASCADE)
    werknemer = models.ForeignKey(User, related_name='weekstaat_werknemer', null=False, blank=False, default=1,on_delete=models.CASCADE)
    maandag = models.FloatField(null=True, blank=True, default=0)
    dinsdag = models.FloatField(null=True, blank=True, default=0)
    woensdag = models.FloatField(null=True, blank=True, default=0)
    donderdag = models.FloatField(null=True, blank=True, default=0)
    vrijdag = models.FloatField(null=True, blank=True, default=0)
    zaterdag = models.FloatField(null=True, blank=True, default=0)
    zondag = models.FloatField(null=True, blank=True, default=0)

    def __str__(self):
        return str(self.jaar) + ' week ' + str(self.week) + str(self.werknemer) + str(self.status)

это мой urls.py

urlpatterns = [
            path('', views.Index.as_view(), name='indexs'),
            path('create/', views.WeekstaatCreateView.as_view(), name='create_Weekstaat'),
            path('update/<int:pk>', views.WeekstaatUpdateView.as_view(), name='update_Weekstaat'),
            path('read/<int:pk>', views.WeekstaatReadView.as_view(), name='read_Weekstaat'),
            path('delete/<int:pk>', views.WeekstaatDeleteView.as_view(), name='delete_Weekstaat'),
            path('indienen/<int:id>', views.indienen, name='weekstaat-indienen'),
        ]

Ответы [ 3 ]

1 голос
/ 03 июня 2019

Ваш код не подходит.Измените свой вид, как показано ниже,

def indienen(request, id):
    <b>weekstaat_instance = Weekstaat.objects.get(pk=id)
    weekstaat_instance.Status = 'Ingedient'
    weekstaat_instance.save()</b>
    return redirect('../../weekstaat')
1 голос
/ 03 июня 2019

В вашей функции indienen вы переопределяете глобальную переменную Weekstaat экземпляром Weekstaat:

def indienen(request, id):
    global Weekstaat
    Weekstaat = Weekstaat.objects.get(pk=id)
    ...

Во второй раз, когда этот метод запускается, вы пытаетесь получить Manager через экземпляр. Это невозможно, следовательно, сообщение об ошибке. Попробуйте вместо этого использовать другое имя переменной:

def indienen(request, id):
    global Weekstaat
    weekstaat = Weekstaat.objects.get(pk=id)  # notice  lowercase w
    weekstaat.Status = 'Ingedient'
    weekstaat.save()
    return redirect('../../weekstaat')
0 голосов
/ 03 июня 2019

Ошибка вызвана опечаткой здесь Weekstaat.Status = 'Ingedient' должно быть Weekstaat.status = 'Ingedient'.NB: строчные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...