Wednesday, January 9, 2013

Re: How to get self.id when saving a new object?

I spend some time for this one and propose next solution :

At first your model has only one image. in this case you dont need
to add url() method . Now model is looks like


from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
# Create your models here.
class BicycleAdItemKind(MPTTModel):
def item_kind_image(self):
return '<img align="middle" src="/media/%s" height="60px" />'
% self.image
item_kind_image.allow_tags = True

# Bicicleta completa, Componentes para bicicleta, Acessorios para ciclista
n_item_kind = models.CharField(max_length=50)
parent = TreeForeignKey('self', null=True,
blank=True, related_name='children')
description = models.TextField(null=True, blank=True)
image = models.ImageField(upload_to='Images',
null=True, blank=True)
date_inserted = models.DateTimeField(auto_now_add=True)
date_last_update = models.DateTimeField(auto_now=True)

def __unicode__(self):
return self.n_item_kind

class MPTTMeta:
order_insertion_by = ['n_item_kind']


Also view should be simple :

# Create your views here.
from django.views.generic import CreateView, ListView
from newmodel.models import BicycleAdItemKind
from newmodel.form import CreatenewmodelForm

class newmodelListView(ListView):
model = BicycleAdItemKind
template_name = 'newmodel/index.html'

class newmodelAddView(CreateView):
model = BicycleAdItemKind
template_name = 'newmodel/create.html'
form_class = CreatenewmodelForm
# please update form valid method
def form_valid(self, form, **kwargs):
BicycleAdItemKind.objects.create()


And your urls.py

from django.conf.urls import patterns, include, url
from newmodel.views import newmodelAddView, newmodelListView

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
# Examples:
# url(r'^$', 'andrelopes.views.home', name='home'),
# url(r'^andrelopes/', include('andrelopes.foo.urls')),

url(r'^newmodel/create$', newmodelAddView.as_view()),
url(r'^newmodel/$', newmodelListView.as_view()),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

# Uncomment the next line to enable the admin:
# url(r'^admin/', include(admin.site.urls)),
)


You should create two templates only it is not hard. I think that
form usage is over the top and you can skip it

Many thanks,

Serge


+380 636150445
skype: skhohlov


2013/1/9 Sergiy Khohlov <skhohlov@gmail.com>:
> I have no idea why you decided to investigate a bicycle...
>
> Please separate task in two simple :
> 1) for editing object use url /<objectname>/<id>/edit
> 2) for creating new object /<objectname>/new
>
> Take a look at generic view.
>
> Many thanks,
>
> Serge
>
>
> +380 636150445
> skype: skhohlov
>
>
> 2013/1/9 Tom Evans <tevans.uk@googlemail.com>:
>> On Wed, Jan 9, 2013 at 12:55 PM, Andre Lopes <lopes80andre@gmail.com> wrote:
>>> Hi,
>>>
>>> I'm without a clue on how to get the sef.id when creating a new object
>>> in Django. I've created a question in StackOverflow. Can someone give
>>> me a clue on this subject?
>>>
>>> Please read the question:
>>> http://stackoverflow.com/questions/14234917/django-how-to-get-self-id-when-saving-a-new-object
>>>
>>> Any clues?
>>
>> Save the object first.
>>
>> Cheers
>>
>> Tom
>>
>> --
>> You received this message because you are subscribed to the Google Groups "Django users" group.
>> To post to this group, send email to django-users@googlegroups.com.
>> To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
>> For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
>>

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment