Exception Value: Generic detail view TransactionDetailView must be called with either an object pk or a slug
This error arises when I attempt to visit the Transaction Detail page from my Transaction List page. I am using a UUID (primary=true) as the PK for the Transaction Detail page.
memberships/models.py
class Transaction(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="user_transaction")
order_id = models.CharField(max_length=36, blank=True, unique=True, default=uuid.uuid4, primary_key=True, editable=False)
membership = models.ForeignKey(Membership, on_delete=models.SET_NULL, null=True, blank=True)
amount = models.DecimalField(max_digits=100, decimal_places=2)
success = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
def __str__(self):
return self.order_id
class Meta:
ordering = ['-timestamp']
urls.py
...removed imports
urlpatterns = [
#Generic
url(r'^django-admin/', admin.site.urls),
url(r'^admin/', include(wagtailadmin_urls)),
url(r'^documents/', include(wagtaildocs_urls)),
url(r'^search/$', search_views.search, name='search'),
#Authentication
url(r'^accounts/', include('allauth.urls')),
#Product
url(r'^portal/', include(('portal.urls', 'portal'), namespace='portal')),
#Payment
url(r'^checkout/', include(('checkout.urls', 'checkout'), namespace='checkout')),
#Membership
url(r'^membership/', include(('memberships.urls', 'memberships'), namespace='memberships')),
#Rating
url(r'^ratings/', include('star_ratings.urls', namespace='ratings')),
#Users
url(r'^users/$', UserListView.as_view(), name='users_list'),
url(r'^profile/$', userPage, name='userPage'),
url(r'^users/~redirect/$', UserRedirectView.as_view(), name='redirect'),
url(r'^users/(?P<username>[w.@+-]+)/$', UserDetailView.as_view(), name='detail'),
url(r'^users/(?P<username>[w.@+-]+)/summary/$', SummaryDetailView.as_view(), name='summary'),
url(r'^users/~update/$', UserUpdateView.as_view(), name='update'),
url(r'^users/redirectprofile/$', RedirectProfileView.as_view(), name='redirectprofile'),
# For anything not caught by a more specific rule above, hand over to
# Wagtail's page serving mechanism. This should be the last pattern in
# the list:
url(r'', include(wagtail_urls)),
# Alternatively, if you want Wagtail pages to be served from a subpath
# of your site, rather than the site root:
# url(r'^pages/', include(wagtail_urls)),
]
if settings.DEBUG:
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# Serve static and media files from development server
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
memberships/urls.py
from django.urls import path
from .views import (
MembershipSelectView,
PaymentView,
success,
updateTransactionRecords,
user_subscriptions_view,
cancelSubscription,
TransactionDetailView,
TransactionListView,
SubscriptionDetailView,
SubscriptionListView,
adminPanel,
permission_denied
)
app_name = 'memberships'
urlpatterns = [
path('', MembershipSelectView.as_view(), name='select'),
path('payment/', PaymentView, name='payment'),
path('success/', success, name='purchase_success'),
path('update-transactions/<subscription_id>/', updateTransactionRecords, name='update-transactions'),
path('subscription/', user_subscriptions_view, name='user_subscription'),
path('cancel/', cancelSubscription, name='cancel'),
#TODO MAKE SURE ONLY SUPERUSERS CAN VIEW THESE PAGES
path('transactions/', TransactionListView.as_view(), name='transaction_list'),
path('transaction/<uuid:order_id>/', TransactionDetailView.as_view(), name='transaction_detail'),
path('subscriptions/', SubscriptionListView.as_view(), name='subscription_list'),
path('subscription/<slug:id>/', SubscriptionDetailView.as_view(), name='subscription_detail'),
path('admin/', adminPanel, name='admin_panel'),
path('permission_denied/', permission_denied, name='permission_denied')
]
memberships/views.py
class TransactionDetailView(DetailView):
model = Transaction
slug_field = 'order_id'
memberships/transaction_list.html
{% if object_list %}
{% for transaction in object_list %}
<tr class="text-left">
<td ><strong><a href="{% url 'memberships:transaction_detail' transaction.order_id %}" class="text-dark">{{ transaction.user }}</a></strong></td>
<td class="text-dark">{{ transaction.order_id }}</td>
<td class="text-dark ">{{ transaction.timestamp }}</td>
<td class="text-dark ">{{ transaction.success }}</td>
<td class="text-dark">$ {{ transaction.amount }}</td>
</tr>
{% endfor %}
{% else %}
<p>There were no transactions found.</p>
{% endif %}
EDIT: I added my main urls.py and the memberships/urls.py. The transaction page is under the memberships.urls.
django uuid
add a comment |
This error arises when I attempt to visit the Transaction Detail page from my Transaction List page. I am using a UUID (primary=true) as the PK for the Transaction Detail page.
memberships/models.py
class Transaction(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="user_transaction")
order_id = models.CharField(max_length=36, blank=True, unique=True, default=uuid.uuid4, primary_key=True, editable=False)
membership = models.ForeignKey(Membership, on_delete=models.SET_NULL, null=True, blank=True)
amount = models.DecimalField(max_digits=100, decimal_places=2)
success = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
def __str__(self):
return self.order_id
class Meta:
ordering = ['-timestamp']
urls.py
...removed imports
urlpatterns = [
#Generic
url(r'^django-admin/', admin.site.urls),
url(r'^admin/', include(wagtailadmin_urls)),
url(r'^documents/', include(wagtaildocs_urls)),
url(r'^search/$', search_views.search, name='search'),
#Authentication
url(r'^accounts/', include('allauth.urls')),
#Product
url(r'^portal/', include(('portal.urls', 'portal'), namespace='portal')),
#Payment
url(r'^checkout/', include(('checkout.urls', 'checkout'), namespace='checkout')),
#Membership
url(r'^membership/', include(('memberships.urls', 'memberships'), namespace='memberships')),
#Rating
url(r'^ratings/', include('star_ratings.urls', namespace='ratings')),
#Users
url(r'^users/$', UserListView.as_view(), name='users_list'),
url(r'^profile/$', userPage, name='userPage'),
url(r'^users/~redirect/$', UserRedirectView.as_view(), name='redirect'),
url(r'^users/(?P<username>[w.@+-]+)/$', UserDetailView.as_view(), name='detail'),
url(r'^users/(?P<username>[w.@+-]+)/summary/$', SummaryDetailView.as_view(), name='summary'),
url(r'^users/~update/$', UserUpdateView.as_view(), name='update'),
url(r'^users/redirectprofile/$', RedirectProfileView.as_view(), name='redirectprofile'),
# For anything not caught by a more specific rule above, hand over to
# Wagtail's page serving mechanism. This should be the last pattern in
# the list:
url(r'', include(wagtail_urls)),
# Alternatively, if you want Wagtail pages to be served from a subpath
# of your site, rather than the site root:
# url(r'^pages/', include(wagtail_urls)),
]
if settings.DEBUG:
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# Serve static and media files from development server
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
memberships/urls.py
from django.urls import path
from .views import (
MembershipSelectView,
PaymentView,
success,
updateTransactionRecords,
user_subscriptions_view,
cancelSubscription,
TransactionDetailView,
TransactionListView,
SubscriptionDetailView,
SubscriptionListView,
adminPanel,
permission_denied
)
app_name = 'memberships'
urlpatterns = [
path('', MembershipSelectView.as_view(), name='select'),
path('payment/', PaymentView, name='payment'),
path('success/', success, name='purchase_success'),
path('update-transactions/<subscription_id>/', updateTransactionRecords, name='update-transactions'),
path('subscription/', user_subscriptions_view, name='user_subscription'),
path('cancel/', cancelSubscription, name='cancel'),
#TODO MAKE SURE ONLY SUPERUSERS CAN VIEW THESE PAGES
path('transactions/', TransactionListView.as_view(), name='transaction_list'),
path('transaction/<uuid:order_id>/', TransactionDetailView.as_view(), name='transaction_detail'),
path('subscriptions/', SubscriptionListView.as_view(), name='subscription_list'),
path('subscription/<slug:id>/', SubscriptionDetailView.as_view(), name='subscription_detail'),
path('admin/', adminPanel, name='admin_panel'),
path('permission_denied/', permission_denied, name='permission_denied')
]
memberships/views.py
class TransactionDetailView(DetailView):
model = Transaction
slug_field = 'order_id'
memberships/transaction_list.html
{% if object_list %}
{% for transaction in object_list %}
<tr class="text-left">
<td ><strong><a href="{% url 'memberships:transaction_detail' transaction.order_id %}" class="text-dark">{{ transaction.user }}</a></strong></td>
<td class="text-dark">{{ transaction.order_id }}</td>
<td class="text-dark ">{{ transaction.timestamp }}</td>
<td class="text-dark ">{{ transaction.success }}</td>
<td class="text-dark">$ {{ transaction.amount }}</td>
</tr>
{% endfor %}
{% else %}
<p>There were no transactions found.</p>
{% endif %}
EDIT: I added my main urls.py and the memberships/urls.py. The transaction page is under the memberships.urls.
django uuid
add a comment |
This error arises when I attempt to visit the Transaction Detail page from my Transaction List page. I am using a UUID (primary=true) as the PK for the Transaction Detail page.
memberships/models.py
class Transaction(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="user_transaction")
order_id = models.CharField(max_length=36, blank=True, unique=True, default=uuid.uuid4, primary_key=True, editable=False)
membership = models.ForeignKey(Membership, on_delete=models.SET_NULL, null=True, blank=True)
amount = models.DecimalField(max_digits=100, decimal_places=2)
success = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
def __str__(self):
return self.order_id
class Meta:
ordering = ['-timestamp']
urls.py
...removed imports
urlpatterns = [
#Generic
url(r'^django-admin/', admin.site.urls),
url(r'^admin/', include(wagtailadmin_urls)),
url(r'^documents/', include(wagtaildocs_urls)),
url(r'^search/$', search_views.search, name='search'),
#Authentication
url(r'^accounts/', include('allauth.urls')),
#Product
url(r'^portal/', include(('portal.urls', 'portal'), namespace='portal')),
#Payment
url(r'^checkout/', include(('checkout.urls', 'checkout'), namespace='checkout')),
#Membership
url(r'^membership/', include(('memberships.urls', 'memberships'), namespace='memberships')),
#Rating
url(r'^ratings/', include('star_ratings.urls', namespace='ratings')),
#Users
url(r'^users/$', UserListView.as_view(), name='users_list'),
url(r'^profile/$', userPage, name='userPage'),
url(r'^users/~redirect/$', UserRedirectView.as_view(), name='redirect'),
url(r'^users/(?P<username>[w.@+-]+)/$', UserDetailView.as_view(), name='detail'),
url(r'^users/(?P<username>[w.@+-]+)/summary/$', SummaryDetailView.as_view(), name='summary'),
url(r'^users/~update/$', UserUpdateView.as_view(), name='update'),
url(r'^users/redirectprofile/$', RedirectProfileView.as_view(), name='redirectprofile'),
# For anything not caught by a more specific rule above, hand over to
# Wagtail's page serving mechanism. This should be the last pattern in
# the list:
url(r'', include(wagtail_urls)),
# Alternatively, if you want Wagtail pages to be served from a subpath
# of your site, rather than the site root:
# url(r'^pages/', include(wagtail_urls)),
]
if settings.DEBUG:
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# Serve static and media files from development server
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
memberships/urls.py
from django.urls import path
from .views import (
MembershipSelectView,
PaymentView,
success,
updateTransactionRecords,
user_subscriptions_view,
cancelSubscription,
TransactionDetailView,
TransactionListView,
SubscriptionDetailView,
SubscriptionListView,
adminPanel,
permission_denied
)
app_name = 'memberships'
urlpatterns = [
path('', MembershipSelectView.as_view(), name='select'),
path('payment/', PaymentView, name='payment'),
path('success/', success, name='purchase_success'),
path('update-transactions/<subscription_id>/', updateTransactionRecords, name='update-transactions'),
path('subscription/', user_subscriptions_view, name='user_subscription'),
path('cancel/', cancelSubscription, name='cancel'),
#TODO MAKE SURE ONLY SUPERUSERS CAN VIEW THESE PAGES
path('transactions/', TransactionListView.as_view(), name='transaction_list'),
path('transaction/<uuid:order_id>/', TransactionDetailView.as_view(), name='transaction_detail'),
path('subscriptions/', SubscriptionListView.as_view(), name='subscription_list'),
path('subscription/<slug:id>/', SubscriptionDetailView.as_view(), name='subscription_detail'),
path('admin/', adminPanel, name='admin_panel'),
path('permission_denied/', permission_denied, name='permission_denied')
]
memberships/views.py
class TransactionDetailView(DetailView):
model = Transaction
slug_field = 'order_id'
memberships/transaction_list.html
{% if object_list %}
{% for transaction in object_list %}
<tr class="text-left">
<td ><strong><a href="{% url 'memberships:transaction_detail' transaction.order_id %}" class="text-dark">{{ transaction.user }}</a></strong></td>
<td class="text-dark">{{ transaction.order_id }}</td>
<td class="text-dark ">{{ transaction.timestamp }}</td>
<td class="text-dark ">{{ transaction.success }}</td>
<td class="text-dark">$ {{ transaction.amount }}</td>
</tr>
{% endfor %}
{% else %}
<p>There were no transactions found.</p>
{% endif %}
EDIT: I added my main urls.py and the memberships/urls.py. The transaction page is under the memberships.urls.
django uuid
This error arises when I attempt to visit the Transaction Detail page from my Transaction List page. I am using a UUID (primary=true) as the PK for the Transaction Detail page.
memberships/models.py
class Transaction(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="user_transaction")
order_id = models.CharField(max_length=36, blank=True, unique=True, default=uuid.uuid4, primary_key=True, editable=False)
membership = models.ForeignKey(Membership, on_delete=models.SET_NULL, null=True, blank=True)
amount = models.DecimalField(max_digits=100, decimal_places=2)
success = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
def __str__(self):
return self.order_id
class Meta:
ordering = ['-timestamp']
urls.py
...removed imports
urlpatterns = [
#Generic
url(r'^django-admin/', admin.site.urls),
url(r'^admin/', include(wagtailadmin_urls)),
url(r'^documents/', include(wagtaildocs_urls)),
url(r'^search/$', search_views.search, name='search'),
#Authentication
url(r'^accounts/', include('allauth.urls')),
#Product
url(r'^portal/', include(('portal.urls', 'portal'), namespace='portal')),
#Payment
url(r'^checkout/', include(('checkout.urls', 'checkout'), namespace='checkout')),
#Membership
url(r'^membership/', include(('memberships.urls', 'memberships'), namespace='memberships')),
#Rating
url(r'^ratings/', include('star_ratings.urls', namespace='ratings')),
#Users
url(r'^users/$', UserListView.as_view(), name='users_list'),
url(r'^profile/$', userPage, name='userPage'),
url(r'^users/~redirect/$', UserRedirectView.as_view(), name='redirect'),
url(r'^users/(?P<username>[w.@+-]+)/$', UserDetailView.as_view(), name='detail'),
url(r'^users/(?P<username>[w.@+-]+)/summary/$', SummaryDetailView.as_view(), name='summary'),
url(r'^users/~update/$', UserUpdateView.as_view(), name='update'),
url(r'^users/redirectprofile/$', RedirectProfileView.as_view(), name='redirectprofile'),
# For anything not caught by a more specific rule above, hand over to
# Wagtail's page serving mechanism. This should be the last pattern in
# the list:
url(r'', include(wagtail_urls)),
# Alternatively, if you want Wagtail pages to be served from a subpath
# of your site, rather than the site root:
# url(r'^pages/', include(wagtail_urls)),
]
if settings.DEBUG:
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# Serve static and media files from development server
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
memberships/urls.py
from django.urls import path
from .views import (
MembershipSelectView,
PaymentView,
success,
updateTransactionRecords,
user_subscriptions_view,
cancelSubscription,
TransactionDetailView,
TransactionListView,
SubscriptionDetailView,
SubscriptionListView,
adminPanel,
permission_denied
)
app_name = 'memberships'
urlpatterns = [
path('', MembershipSelectView.as_view(), name='select'),
path('payment/', PaymentView, name='payment'),
path('success/', success, name='purchase_success'),
path('update-transactions/<subscription_id>/', updateTransactionRecords, name='update-transactions'),
path('subscription/', user_subscriptions_view, name='user_subscription'),
path('cancel/', cancelSubscription, name='cancel'),
#TODO MAKE SURE ONLY SUPERUSERS CAN VIEW THESE PAGES
path('transactions/', TransactionListView.as_view(), name='transaction_list'),
path('transaction/<uuid:order_id>/', TransactionDetailView.as_view(), name='transaction_detail'),
path('subscriptions/', SubscriptionListView.as_view(), name='subscription_list'),
path('subscription/<slug:id>/', SubscriptionDetailView.as_view(), name='subscription_detail'),
path('admin/', adminPanel, name='admin_panel'),
path('permission_denied/', permission_denied, name='permission_denied')
]
memberships/views.py
class TransactionDetailView(DetailView):
model = Transaction
slug_field = 'order_id'
memberships/transaction_list.html
{% if object_list %}
{% for transaction in object_list %}
<tr class="text-left">
<td ><strong><a href="{% url 'memberships:transaction_detail' transaction.order_id %}" class="text-dark">{{ transaction.user }}</a></strong></td>
<td class="text-dark">{{ transaction.order_id }}</td>
<td class="text-dark ">{{ transaction.timestamp }}</td>
<td class="text-dark ">{{ transaction.success }}</td>
<td class="text-dark">$ {{ transaction.amount }}</td>
</tr>
{% endfor %}
{% else %}
<p>There were no transactions found.</p>
{% endif %}
EDIT: I added my main urls.py and the memberships/urls.py. The transaction page is under the memberships.urls.
django uuid
django uuid
edited Nov 16 '18 at 3:49
Dominic M.
asked Nov 15 '18 at 18:45
Dominic M.Dominic M.
9319
9319
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You need to update the slug_url_kwarg
in your view. For example:
class TransactionDetailView(DetailView):
model = Transaction
slug_field = 'order_id'
slug_url_kwarg = 'order_id'
...
Because based on this code, slug value is taken from kwargs by attribute slug_url_kwarg
of the View.
Also please update the url path.
Url:
path('transaction/<uuid:order_id>/', TransactionDetailView.as_view(), name='transaction_detail'),
Now i'm getting this error, Exception Value: Reverse for 'transaction_detail' not found. 'transaction_detail' is not a valid view function or pattern name.
– Dominic M.
Nov 15 '18 at 21:30
@DominicM. Please see the url section of my answer.
– ruddra
Nov 16 '18 at 1:25
Still isn't working, same error
– Dominic M.
Nov 16 '18 at 2:19
Can you please share your mainurls.py
(which sits besidesettings.py
)?
– ruddra
Nov 16 '18 at 3:13
1
Lol I found it, not sure how I didn't see it. I had {{ url 'checkout:transaction_detail' transactions.order_id }}. The checkout needed to be changed to memberships. Thank you for all the help!
– Dominic M.
Nov 16 '18 at 13:25
|
show 4 more comments
You've set the view's slug_field
parameter to order_id
, but you haven't told it where to get the value for that field; the view is still expecting the URL to give it either pk
or slug
, as the error says.
In fact, your order_id
is the primary key, not the slug, and Django already has an alias to whatever your primary key is: pk
. So you should replace that attribute with pk_url_kwarg
.
class TransactionDetailView(DetailView):
model = Transaction
pk_url_kwarg = 'order_id'
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53326047%2fexception-value-generic-detail-view-transactiondetailview-must-be-called-with-e%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You need to update the slug_url_kwarg
in your view. For example:
class TransactionDetailView(DetailView):
model = Transaction
slug_field = 'order_id'
slug_url_kwarg = 'order_id'
...
Because based on this code, slug value is taken from kwargs by attribute slug_url_kwarg
of the View.
Also please update the url path.
Url:
path('transaction/<uuid:order_id>/', TransactionDetailView.as_view(), name='transaction_detail'),
Now i'm getting this error, Exception Value: Reverse for 'transaction_detail' not found. 'transaction_detail' is not a valid view function or pattern name.
– Dominic M.
Nov 15 '18 at 21:30
@DominicM. Please see the url section of my answer.
– ruddra
Nov 16 '18 at 1:25
Still isn't working, same error
– Dominic M.
Nov 16 '18 at 2:19
Can you please share your mainurls.py
(which sits besidesettings.py
)?
– ruddra
Nov 16 '18 at 3:13
1
Lol I found it, not sure how I didn't see it. I had {{ url 'checkout:transaction_detail' transactions.order_id }}. The checkout needed to be changed to memberships. Thank you for all the help!
– Dominic M.
Nov 16 '18 at 13:25
|
show 4 more comments
You need to update the slug_url_kwarg
in your view. For example:
class TransactionDetailView(DetailView):
model = Transaction
slug_field = 'order_id'
slug_url_kwarg = 'order_id'
...
Because based on this code, slug value is taken from kwargs by attribute slug_url_kwarg
of the View.
Also please update the url path.
Url:
path('transaction/<uuid:order_id>/', TransactionDetailView.as_view(), name='transaction_detail'),
Now i'm getting this error, Exception Value: Reverse for 'transaction_detail' not found. 'transaction_detail' is not a valid view function or pattern name.
– Dominic M.
Nov 15 '18 at 21:30
@DominicM. Please see the url section of my answer.
– ruddra
Nov 16 '18 at 1:25
Still isn't working, same error
– Dominic M.
Nov 16 '18 at 2:19
Can you please share your mainurls.py
(which sits besidesettings.py
)?
– ruddra
Nov 16 '18 at 3:13
1
Lol I found it, not sure how I didn't see it. I had {{ url 'checkout:transaction_detail' transactions.order_id }}. The checkout needed to be changed to memberships. Thank you for all the help!
– Dominic M.
Nov 16 '18 at 13:25
|
show 4 more comments
You need to update the slug_url_kwarg
in your view. For example:
class TransactionDetailView(DetailView):
model = Transaction
slug_field = 'order_id'
slug_url_kwarg = 'order_id'
...
Because based on this code, slug value is taken from kwargs by attribute slug_url_kwarg
of the View.
Also please update the url path.
Url:
path('transaction/<uuid:order_id>/', TransactionDetailView.as_view(), name='transaction_detail'),
You need to update the slug_url_kwarg
in your view. For example:
class TransactionDetailView(DetailView):
model = Transaction
slug_field = 'order_id'
slug_url_kwarg = 'order_id'
...
Because based on this code, slug value is taken from kwargs by attribute slug_url_kwarg
of the View.
Also please update the url path.
Url:
path('transaction/<uuid:order_id>/', TransactionDetailView.as_view(), name='transaction_detail'),
edited Nov 16 '18 at 1:24
answered Nov 15 '18 at 19:50
ruddraruddra
15.7k32951
15.7k32951
Now i'm getting this error, Exception Value: Reverse for 'transaction_detail' not found. 'transaction_detail' is not a valid view function or pattern name.
– Dominic M.
Nov 15 '18 at 21:30
@DominicM. Please see the url section of my answer.
– ruddra
Nov 16 '18 at 1:25
Still isn't working, same error
– Dominic M.
Nov 16 '18 at 2:19
Can you please share your mainurls.py
(which sits besidesettings.py
)?
– ruddra
Nov 16 '18 at 3:13
1
Lol I found it, not sure how I didn't see it. I had {{ url 'checkout:transaction_detail' transactions.order_id }}. The checkout needed to be changed to memberships. Thank you for all the help!
– Dominic M.
Nov 16 '18 at 13:25
|
show 4 more comments
Now i'm getting this error, Exception Value: Reverse for 'transaction_detail' not found. 'transaction_detail' is not a valid view function or pattern name.
– Dominic M.
Nov 15 '18 at 21:30
@DominicM. Please see the url section of my answer.
– ruddra
Nov 16 '18 at 1:25
Still isn't working, same error
– Dominic M.
Nov 16 '18 at 2:19
Can you please share your mainurls.py
(which sits besidesettings.py
)?
– ruddra
Nov 16 '18 at 3:13
1
Lol I found it, not sure how I didn't see it. I had {{ url 'checkout:transaction_detail' transactions.order_id }}. The checkout needed to be changed to memberships. Thank you for all the help!
– Dominic M.
Nov 16 '18 at 13:25
Now i'm getting this error, Exception Value: Reverse for 'transaction_detail' not found. 'transaction_detail' is not a valid view function or pattern name.
– Dominic M.
Nov 15 '18 at 21:30
Now i'm getting this error, Exception Value: Reverse for 'transaction_detail' not found. 'transaction_detail' is not a valid view function or pattern name.
– Dominic M.
Nov 15 '18 at 21:30
@DominicM. Please see the url section of my answer.
– ruddra
Nov 16 '18 at 1:25
@DominicM. Please see the url section of my answer.
– ruddra
Nov 16 '18 at 1:25
Still isn't working, same error
– Dominic M.
Nov 16 '18 at 2:19
Still isn't working, same error
– Dominic M.
Nov 16 '18 at 2:19
Can you please share your main
urls.py
(which sits beside settings.py
)?– ruddra
Nov 16 '18 at 3:13
Can you please share your main
urls.py
(which sits beside settings.py
)?– ruddra
Nov 16 '18 at 3:13
1
1
Lol I found it, not sure how I didn't see it. I had {{ url 'checkout:transaction_detail' transactions.order_id }}. The checkout needed to be changed to memberships. Thank you for all the help!
– Dominic M.
Nov 16 '18 at 13:25
Lol I found it, not sure how I didn't see it. I had {{ url 'checkout:transaction_detail' transactions.order_id }}. The checkout needed to be changed to memberships. Thank you for all the help!
– Dominic M.
Nov 16 '18 at 13:25
|
show 4 more comments
You've set the view's slug_field
parameter to order_id
, but you haven't told it where to get the value for that field; the view is still expecting the URL to give it either pk
or slug
, as the error says.
In fact, your order_id
is the primary key, not the slug, and Django already has an alias to whatever your primary key is: pk
. So you should replace that attribute with pk_url_kwarg
.
class TransactionDetailView(DetailView):
model = Transaction
pk_url_kwarg = 'order_id'
add a comment |
You've set the view's slug_field
parameter to order_id
, but you haven't told it where to get the value for that field; the view is still expecting the URL to give it either pk
or slug
, as the error says.
In fact, your order_id
is the primary key, not the slug, and Django already has an alias to whatever your primary key is: pk
. So you should replace that attribute with pk_url_kwarg
.
class TransactionDetailView(DetailView):
model = Transaction
pk_url_kwarg = 'order_id'
add a comment |
You've set the view's slug_field
parameter to order_id
, but you haven't told it where to get the value for that field; the view is still expecting the URL to give it either pk
or slug
, as the error says.
In fact, your order_id
is the primary key, not the slug, and Django already has an alias to whatever your primary key is: pk
. So you should replace that attribute with pk_url_kwarg
.
class TransactionDetailView(DetailView):
model = Transaction
pk_url_kwarg = 'order_id'
You've set the view's slug_field
parameter to order_id
, but you haven't told it where to get the value for that field; the view is still expecting the URL to give it either pk
or slug
, as the error says.
In fact, your order_id
is the primary key, not the slug, and Django already has an alias to whatever your primary key is: pk
. So you should replace that attribute with pk_url_kwarg
.
class TransactionDetailView(DetailView):
model = Transaction
pk_url_kwarg = 'order_id'
answered Nov 15 '18 at 19:50
Daniel RosemanDaniel Roseman
456k41592649
456k41592649
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53326047%2fexception-value-generic-detail-view-transactiondetailview-must-be-called-with-e%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown