. ManyToMany relationship in django models Skip to main content

ManyToMany relationship in django models

I'm trying to add relation between three table with manyToMany relationship. I'm learning python and new for Django framework. For requirement, An user can add a project and he also can add permission for view for another user. It means an user can have multiple projects and a project also have multiple user. User model is default user model of django.
and the project model is:
Projects/model.py
 from django.db import models  
 from django.contrib.auth.models import User  
 # Create your models here.  
 class Projects(models.Model):  
   project_title = models.CharField(max_length=255)  
   description = models.TextField(blank=True)  
   privacy = models.SmallIntegerField(default=1) # 1 for public, 2 for private  
   status = models.SmallIntegerField(default=1) #1 for active, 2 for deactive, 3 for delete, 4 for depricated  
   created_at = models.DateTimeField('date published', blank=True, default=False)  
   users = models.ManyToManyField(User, through="UserProjects")  
 class UserProjects(models.Model):  
   user = models.ForeignKey(User,blank=True, default=False)  
   project = models.ForeignKey(Projects,blank=True)  
   owner = models.SmallIntegerField(default=1)  

It's not working. When i'm add a project is produce some error..
 Traceback (most recent call last):  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\core\handlers\exception.py", line 41, in inner  
   response = get_response(request)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\core\handlers\base.py", line 187, in _get_response  
   response = self.process_exception_by_middleware(e, request)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\core\handlers\base.py", line 185, in _get_response  
   response = wrapped_callback(request, *callback_args, **callback_kwargs)  
  File "E:\Programs\Python\RestClient\Projects\views.py", line 29, in add  
   p.save()  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\base.py", line 806, in save  
   force_update=force_update, update_fields=update_fields)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\base.py", line 836, in save_base  
   updated = self._save_table(raw, cls, force_insert, force_update, using, upda  
 te_fields)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\base.py", line 922, in _save_table  
   result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\base.py", line 961, in _do_insert  
   using=using, raw=raw)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\manager.py", line 85, in manager_method  
   return getattr(self.get_queryset(), name)(*args, **kwargs)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\query.py", line 1063, in _insert  
   return query.get_compiler(using=using).execute_sql(return_id)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\sql\compiler.py", line 1098, in execute_sql  
   for sql, params in self.as_sql():  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\sql\compiler.py", line 1051, in as_sql  
   for obj in self.query.objs  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\sql\compiler.py", line 1051, in <listcomp>  
   for obj in self.query.objs  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\sql\compiler.py", line 1050, in <listcomp>  
   [self.prepare_value(field, self.pre_save_val(field, obj)) for field in field  
 s]  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\sql\compiler.py", line 990, in prepare_value  
   value = field.get_db_prep_save(value, connection=self.connection)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\fields\__init__.py", line 770, in get_db_prep_save  
   prepared=False)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\fields\__init__.py", line 1459, in get_db_prep_value  
   value = self.get_prep_value(value)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\fields\__init__.py", line 1438, in get_prep_value  
   value = super(DateTimeField, self).get_prep_value(value)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\fields\__init__.py", line 1296, in get_prep_value  
   return self.to_python(value)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\db\models\fields\__init__.py", line 1399, in to_python  
   parsed = parse_datetime(value)  
  File "C:\Users\Jitendra\AppData\Local\Programs\Python\Python35-32\lib\site-pac  
 kages\django\utils\dateparse.py", line 94, in parse_datetime  
   match = datetime_re.match(value)  
 TypeError: expected string or bytes-like object  
 [28/Jul/2017 22:25:10] "POST /projects/add/ HTTP/1.1" 500 145532  


And here the projects/view.py

 def add(request):  
   form = ProjectForm()  
   if request.method == "POST":  
     form = ProjectForm(request.POST)  
     if form.is_valid():  
       p = Projects(project_title=request.POST.get("project_title"), description=request.POST.get("description"),  
              status=1, privacy=1)  
       p.save()  
       sp = UserProjects(user_id=request.user.id, project_id=p.id)  
       sp.save()  
       p.users.add(sp)  
       messages.success(request, 'Profile details updated.')  
   view_data = {  
     "form": form,  
     'title': "Add new project"  
   }  
   return render(request, 'projects/add.html', view_data)  

I dont know, whats wrong with it. Please guide me. Thanks

Comments

Popular posts from this blog

Create app in phonegap in windows

Phonegap (Cordova) is a tool that allows creating native mobile app using HTML, CSS and Javascript. This article shows you, how to create application and deploy them to various native mobile platforms using the cordova command-line interface (CLI). Install Cordova using CLI Follow these steps to install: Download and install Node.js . Following installation, you should be able to invoke node and npm on your command line. Install the cordova module using npm utility of Node.js. The cordova module will automatically be downloaded by the npm utility.   $ npm install -g cordova Create APP: Go to the directory where you maintain your source code, and run a command such as the following: using command. Create hello app: $ cordova create hello com.example.hello HelloWorld This command will create a folder ‘HelloWorld’. All subsequent commands need to be run within the project's directory, or any subdirectories. So go to in this folder ‘cd HelloWorld’. Add the pl...

Connecting to Socket in React Native app

Connecting to a socket in a React Native app requires the use of a socket library that supports React Native. One popular library is socket.io-client . Here are the steps to connect to a socket using socket.io-client in a React Native app: Install socket.io-client by running the following command in your project directory: npm install socket.io-client 2. Import the library in your code: import io from 'socket.io-client'; 3. Create a socket instance by calling the io function and passing in the URL of the socket server: const socket = io('http://example.com'); Replace http://example.com with the URL of your socket server. 4. Add event listeners to the socket instance to handle incoming events: socket.on('connect', () => { console.log('Connected to socket server'); }); socket.on('event', (data) => { console.log('Received data:', data); }); Replace event with the name ...

Know about the Web Socket and setup WebSocket in Javascript HTML page

  WebSockets is a protocol for providing full-duplex communication channels over a single TCP connection. It allows for real-time, two-way communication between a client and a server, which makes it ideal for web applications that require continuous updates from the server or that need to send frequent updates to the server. Here are some basic information about WebSockets: WebSockets are designed to work over a single TCP connection, which means that they are more efficient than other protocols like HTTP that require multiple connections for each request/response cycle. WebSockets use a persistent connection between the client and server, which allows for real-time communication without the need for frequent polling or long-polling requests. The WebSocket protocol uses a message-based model for sending and receiving data, which means that data is transmitted as a stream of messages rather than a series of HTTP requests and responses. WebSockets support binary data transmission, wh...