Hi everone, 


I started to code a two-apps django project. ModelA belongs to appone and 
ModelB belongs to apptwo. My purpose is to create a ModelA instance 
everytime that the user creates a ModelB instance. And the value of a 
ModelA CharField (that is ckeditor widgeted) must be the source code of a 
ModelB admin view. I used a post_data signal to link a function of creation 
for that. The problem is that i use the id of each instance of ModelB in 
order to create the good content for each instance of ModelA. When I try to 
use a string of the url sending the id parameter, the content field has for 
value the source code of the debug page 

(error 500, DoesNotExist at /admin/apptwo/modelb/my_view/ref=76, [76 is an 
example] ModelB matching query does not exist. Exception location : 
/home/me/Desktop/env/lib/python3.5/site-packages/django/db/models/query.py 
in get, line 385)

But when I try to visit the url "
http://localhost:8000//admin/apptwo/modelb/my_view/ref=76";, or when I 
hardcode the url, without a str(instance.id), the page exists and 
everything works perfectly.

I don't understand why. 

Could anybody give me some help to solve this problem ?

Thanks in advance,

------------------------------

PS : 

The first app has a model.py that contains the following code : 


from django.db import models
from django.contrib.auth.models import Userfrom registre.models import *
class ModelA(models.Model):
    content = models.CharField(max_length=255, null=True)
    def __str__(self):
        return "ModelA : " + str(self.id)




the admin.py of this first app also contains : 


from django.contrib import admin
from appone.models import *
from apptwo.models import ModelB
from django.http import HttpResponse
from django.template.response import TemplateResponse
from django.conf.urls import url
from registre import views
from django.db.models.signals import post_save
from django.dispatch import receiver
import datetime
from django.contrib.auth.models import User
from django import forms
from ckeditor.widgets import CKEditorWidget
from django.template.loader import render_to_string
import requests

class ModelAAdminForm(forms.ModelForm):
    content = forms.CharField(widget=CKEditorWidget())
    class Meta:
        model = ModelA
        fields = '__all__'

class ModelAAdmin(admin.ModelAdmin):
    form = ModelAAdminForm

def create_A(sender, instance, **kwargs):
    string = "http://localhost:8000/admin/apptwo/modelb/my_view/ref="; + 
str(instance.id)
    r = requests.get(string)
    ModelA.objects.create(contenu=r.text.encode('utf-8'))

post_save.connect(create_A, sender=ModelB) 

admin.site.register(ModelA, ModelAAdmin)





the second app (apptwo) has a models.py like this : 



from django.db import models
from django.contrib.auth.models import User

class ModelB(models.Model):
    owner = models.ForeignKey(User, null=True)
    name = models.CharField(max_length=255, null=True)

    def __str__(self):
        return self.name




and an admin.py that contains : 



    from django.contrib import admin
    from appone.models import *
    from apptwo.models import *
    import datetime
    from django.conf.urls import url, include
    from django.template.response import TemplateResponse

    class ModelBAdmin(admin.ModelAdmin):

        def get_queryset(self, request):
            qs = super(ModelB, self).get_queryset(request)
            if request.user.is_superuser:
                return qs
            return qs.filter(owner=request.user)

        def save_model(self, request, obj, form, change):
            obj.owner = request.user
            obj.save()

        def get_urls(self):
            urls = super(ModelBAdmin, self).get_urls()
            my_urls = [
                url(r'^my_view/ref=(?P<id>\d+)$', self.my_view),
            ]
            return my_urls + urls

        def my_view(self, request, id):
            context = dict(
               self.admin_site.each_context(request),
               selector = ModelB.objects.get(id=id),
            )
            return TemplateResponse(request, "myview.html", context)

admin.site.register(ModelB, ModelBAdmin)







and finally a template myview.html with : 


<p>Test {{ selector.name }}</p>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/c146a55b-12ed-47d8-8bcb-7b5fc405b739%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to